我想为属于组的用户和属于组的组建模,所以我正在思考(原谅newb语法):
class Group < ActiveRecord::Base
attr_accessible :description, :group_id, :name
has_and_belongs_to_many :users
end
class User < ActiveRecord::Base
attr_accessible :email, :name
has_and_belongs_to_many :groups
end
以上是否是实施此方法的首选方式?是否有一种简单的方法可以删除“父”组并让它删除它的孩子?
在撰写本文时,我正在学习rails 3.2.x ...
答案 0 :(得分:4)
我讨厌成为一名宝石推动者,但我最近开始使用ancestry
,它运作良好。它有一种独特的方式来索引祖先和后代,以获得出色的表现。
还有Railscast覆盖它。
Ancestry是一个gem /插件,允许Ruby on Rails的记录 ActiveRecord模型被组织为树结构(或层次结构)。 它使用单个,直观格式化的数据库列,使用 物化路径模式的变化。它揭露了所有的 标准树结构关系(祖先,父母,根,儿童, 兄弟姐妹,后代)和所有这些都可以在一个SQL中获取 查询。其他功能包括STI支持,范围,深度缓存, 深度限制,从旧插件/宝石轻松迁移,完整性 检查,完整性恢复,将(子)树安排成哈希 以及处理孤立记录的不同策略。
答案 1 :(得分:2)
我在这里猜测 - 但用户是否可以在多个群组中,群组只能在一个群组中(父群组)?
class Group < ActiveRecord::Base
attr_accessible :description, :name
has_many :groups, :dependent => :destroy
has_many :group_users, :dependent => :destroy
has_many :users, :through => :group_users
belongs_to :parent_group, :class_name => :group
end
class GroupUsers < ActiveRecord::Base
belongs_to :group
belongs_to :user
end
class User < ActiveRecord::Base
attr_accessible :email, :name
has_many :group_users, :dependent => :destroy
has_many :groups, :through => :group_users
end