0

我想对属于组的用户和属于组的组进行建模,所以我正在考虑(请原谅 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 ...

4

2 回答 2

4

我讨厌成为宝石推手,但我最近开始使用ancestry,而且效果很好。它有一种独特的方式来索引祖先和后代以获得出色的性能。

还有一个覆盖它的Railscast 。

Ancestry 是一个 gem/插件,它允许将 Ruby on Rails ActiveRecord 模型的记录组织为树结构(或层次结构)。它使用单一的、直观格式化的数据库列,使用物化路径模式的变体。它公开了所有标准的树结构关系(祖先、父、根、子、兄弟、后代),所有这些都可以在单个 SQL 查询中获取。其他功能包括 STI 支持、范围、深度缓存、深度约束、从旧插件/gem 轻松迁移、完整性检查、完整性恢复、将(子)树排列为哈希以及处理孤立记录的不同策略。

来源:https ://github.com/stefankroes/ancestry#readme

于 2013-04-04T17:38:03.457 回答
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
于 2013-04-05T04:39:57.000 回答