我想构建用户可以加入的“群组”, 所需的步骤和事情的流程在我的脑海中,但构建它的代码缺乏一点,因为我还在学习rails。我想就你的想法提出一些建议,以便在下面完成以下工作:
我想创建像这样的模型会话 组|名称| 但是,我如何存储此会话中的多个用户? 我应该制作一个user_id的数组,并制作一个额外的列 groups | name | user_ids?
我可以使用什么样的最佳做法和哪些rails(3)方法来启动并运行上述功能的粗略版本?
答案 0 :(得分:7)
据我所知,这是一对多关系。所以你会有3个型号:
class User < AR
has_many :memberships
has_many :groups, :through => :memberships
end
class Membership < AR
belongs_to :user
belongs_to :group
end
class Group < AR
has_many :memberships
has_many :users, :through => :memberships
end
并了解用户属于哪个群组:
@group = Group.find_by_name("test")
@users_group = @group.users
确保创建组的用户也属于它:
# in group_controller.rb
def create
@group = Group.new(params[:group])
@group.users << current_user
if @group.save
# ... etc
end
end
当然current_user
应该存在/使用通常的before_filter
登录(如果我记得正确的authenticate!
并设计)
答案 1 :(得分:0)
抱歉,我正在创建一个新帖子,但我现在无法评论我的新状态。
@charlysisto您对此问题的回答涉及用户,成员资格和群组类。我理解User和Group的需要,但我很困惑为什么我们需要一个Membership类。如果没有,那么让Group类与Group一起更有意义吗?
class User < AR
belongs_to :group
belongs_to :groups, :through => :group
end
class Groups < AR
has_many :groups
has_many :users, :through => :group
end
class Group < AR
has_many :users
belongs_to :groups
end
您怎么看?