Rails(ActiveRecord)多对多表

Ori*_*Ori 12 ruby activerecord many-to-many ruby-on-rails

我有两个模型,用户和组.每个组可以有许多用户,每个用户可以在许多组中.

我目前有一些简单的东西:

用户:

has_many    :groups
Run Code Online (Sandbox Code Playgroud)

组:

has_many    :users
Run Code Online (Sandbox Code Playgroud)

所以我有一个groups_users表,它只是用group_id和user_id创建行.我想在此添加另一列(我有),问题是如何在不使用自定义SQL调用的情况下从模型中访问它?在组模型中,我可以使用self.users,在用户中我可以使用self.groups

有没有办法从用户模型更改此表中的第三列?

对不起,如果这令人困惑,请告知此事

小智 14

以下是一些应该有用的教程.基本上有两种方法可以进行多对多工作,包括has_and_belongs_to_many或has_many:through(推荐).

链接:

  1. http://blog.hasmanythrough.com/2006/4/20/many-to-many-dance-off
  2. http://railscasts.com/episodes/47-two-many-to-many
  3. http://railscasts.com/episodes/154-polymorphic-association


big*_*ato 9

在Rails 3中,您希望使用要按字母顺序连接的表的复数名称为多对多关系创建连接表.所以在这种情况下它会groups_users.

楷模

class GroupsUser < ActiveRecord::Base
  belongs_to :user
  belongs_to :group
end

class User < ActiveRecord::Base
  has_many :groups_users
  has_many :groups, :through => :groups_users
end

class Group < ActiveRecord::Base
  has_many :groups_users
  has_many :users, :through => :groups_users
end
Run Code Online (Sandbox Code Playgroud)