0

我有这两个模型:团队和用户。

每个用户可以有团队,每个团队有很多用户。但我想用 team.members 调用 team.users。我设法用 class_name 做到了这一点,但我还需要按用户访问团队。换句话说 user.team 应该返回我用户所在的团队。这是我想出的...

我的模型如下:

class Team < ActiveRecord::Base
  has_many :members, foreign_key: 'id', class_name: 'User', :inverse_of => :team
end

class User < ActiveRecord::Base
  belongs_to :team, :inverse_of => :user
end

(我也尝试使用 :inverse_of => :members ,在 User 模型中。)

4

1 回答 1

1

你是:inverse_of对的,至少在你使用:inverse_of => :members. 这里的问题是外键。foreign_key在另一个表中指定键列的名称,因此在您的情况下是在用户表中。如果您指定 just id,则将使用用户的 id。只需通过不指定外键将其保留为默认值,然后将其team_id.

class Team < ActiveRecord::Base
  has_many :members, :class_name => 'User', :inverse_of => :team
end

class User < ActiveRecord::Base
  belongs_to :team, :inverse_of => :members
end

并且尽量不要将 ruby​​ 1.8 ( ) 中的 hash-syntax 与:key => 'value'ruby​​ 1.9 ( ) 中的新语法混合key: 'value'

于 2013-04-22T07:11:24.447 回答