我有两个模型:团队和用户。
每个用户可以有团队,每个团队有很多用户。但我想和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。)
发布于 2013-04-22 15:11:24
至少在使用:inverse_of => :members时,您的:inverse_of是正确的。这里的问题是外键。foreign_key在另一个表中指定键列的名称,因此在本例中是在用户表中。如果仅指定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尽量不要将Ruby1.8 (:key => 'value')的散列语法与Ruby1.9 (key: 'value')的新语法混为一谈。
https://stackoverflow.com/questions/16140888
复制相似问题