我有两个模型,Game
和User
。
每个游戏都发生在两个用户之间。我试图以这种方式进行关联:
class Game < ActiveRecord::Base
belongs_to :user, :class => "User", :foreign_key => 'user_a_id'
belongs_to :user, :class => "User", :foreign_key => 'user_b_id'
end
class User < ActiveRecord::Base
has_many :user_a, :class_name => 'Game'
has_many :user_b, :class_name => 'Game'
end
但是当我在视图中使用它时:
@game.user_a.name
@game.user_b.name
输出错误是:
undefined method `user_a' for #<Game:0x007feb73ce2b90>
如何正确设置这两个模型之间的关联,以便能够将用户显示为@game.user_a.name
?
表games
中的列是user_a
和user_b
。
提前感谢您的帮助。
答案 0 :(得分:1)
您需要创建不同的关联名称:
class Game < ActiveRecord::Base
belongs_to :user_a, :class => "User", :foreign_key => 'user_a_id'
belongs_to :user_b, :class => "User", :foreign_key => 'user_b_id'
end
并且,在games
表中,当您在user_a_id
类中声明为外键时,列名称应为user_a_id
和Game
。