rubyonrails3-关系建模和路由



考虑这两种资源:用户

规则:

  • 组由用户所有
  • 一个组包含许多用户
  • 一个用户可以有许多组
  • 一个用户可以参加许多组

我所拥有的:

class User
  has_many :groups, :foreign_key => "owner_id"
  has_and_belongs_to_many :attended_groups,
                      :class_name => "Group",
                      :join_table => "groups_members",
                      :foreign_key => "member_id"
end
class Group
  belongs_to :owner, :class_name => "User", :foreign_key => "owner_id"
  has_and_belongs_to_many :members, :class_name => "User",
                                 :join_table => "groups_members",
                                 :association_foreign_key => "member_id"
end

我的问题是:在组控制器中添加操作的最佳(优雅的?)解决方案是什么?当所有者看到他的组(和所有成员)时,让它看看谁不在那里,也许可以添加它。比如:/groups/1/add_member/2。用户在看到组的页面时添加组也是一样的。

我已经设法使它发挥作用,但我想看看它应该如何。这个问题太简单了,不可能有像我这样复杂的解决方案。也许我模拟问题的方式也不是最好的方式。

郑重声明,我是Rails的新手。

请评论!提前感谢!

您可能想要创建一个嵌套的资源模式。不过,它遵循REST,所以您将不得不处理url的命名约定。

resources :groups do
  resources :users
end

这是一个很好的资源:http://guides.rubyonrails.org/routing.html#resource-路由轨道默认

为了将现有用户添加到现有组中,我可能会定义一个新的路由。

match '/groups/:group/users/add' => 'groups#add'

这个在控制器中

@group = Group.find params[:group]
@user = User.find params[:user]
@group.users << @user if @user

相关内容

  • 没有找到相关文章

最新更新