ruby-on-rails - rails 3 : Modeling groups and members as a hierarchy

标签 ruby-on-rails activerecord ancestry

Group 实例可以包含 Person 实例或其他 Group 实例。我想使用 Ancestry gem 来镜像层次结构,但 Ancestry 似乎不适用于两种不同的模型。我不想在 PersonModel 上使用单表继承,因为它们在概念上是不同的。

对此需求进行建模的最佳方法是什么?我愿意使用多对多或其他类型的关联来构建自己的层次结构,但我不确定如何创建两个模型(PersonGroup)彼此相处融洽。

谢谢。

最佳答案

您可以轻松地在 Group 类上设置层次结构(使用适合您的单模型层次结构的任何内容),然后在 Groups 和 Users 之间添加一对多关联:

class Group < AR::Base
  acts_as_tree # or whatever is called in your preferred tree implementation
  has_many :users
end

class User < AR::Base
  belongs_to :group
end

你将会拥有

@group.children # => a list of groups
@group.parent   # => another group or nil if root
@group.users    # => the users directly below this group
@user.group     # => a group

如果您确实需要组拥有用户或子组,但不能同时拥有两者,请使用验证规则。

关于ruby-on-rails - rails 3 : Modeling groups and members as a hierarchy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12924416/

相关文章:

mysql - Ruby on Rails - 总和计算不适用于模型中的关联

ruby-on-rails - rake 迁移中止 : could not find table 'roles'

ruby-on-rails - Heroku 中为 "NameError: uninitialized constant Newsletter",但不在开发中,Ruby on Rails 4

mysql - 同步两个数据库上的数据

ruby-on-rails-3 - 允许用户创建动态模型属性?

ruby-on-rails - 如何找到 Parent_id 可选的 ActiveRecord 条目的最终祖先?

ruby-on-rails-3 - 如何从祖先生成json树

ruby-on-rails - Ruby 错误(未初始化的常量 User::Relationship)

ruby-on-rails - Rails 和 attr_accessible : is there a way to raise an exception if a non-mass-assignable attribute is mass-assigned?