创建用户可以加入的"群组",这会是一个好方法吗?

Rub*_*tic 2 session join ruby-on-rails

我想构建用户可以加入的"组",所需的步骤和事情的流程在我脑海中,但构建它的代码缺少一些,因为我还在学习rails.我想就您的想法提出一些建议,以便在下面完成以下任务:

  • 您可以创建名为"test"的组
  • 您自动加入群组测试,其他用户可以加入
  • 如果想查看加入我的群组'test'的用户列表

我想创建一个模型会话,如组|名称| 但是,我如何存储此会话中的多个用户?我应该创建一个user_id的数组,并创建一个像groups | name | user_ids这样的额外列吗?

什么是最佳实践以及我可以使用哪种rails(3)方法来获得上述功能的粗略版本并运行?

cha*_*sto 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
Run Code Online (Sandbox Code Playgroud)

并了解用户属于哪个组:

@group = Group.find_by_name("test")
@users_group = @group.users
Run Code Online (Sandbox Code Playgroud)

更新

确保用户创建组也属于它:

# in group_controller.rb
def create
  @group = Group.new(params[:group])
  @group.users << current_user

  if @group.save
    # ... etc
  end
end
Run Code Online (Sandbox Code Playgroud)

当然current_user应该存在/与通常一起登录before_filter(如果我没记错的话authenticate!,那就是设计)