Rails - 2x belongs_to到同一模型返回“用户”的未定义方法`arel_table':String“

时间:2015-02-02 14:21:46

标签: ruby-on-rails ruby model associations

我有两个模型,GameUser

每个游戏都发生在两个用户之间。我试图以这种方式进行关联:

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_auser_b

提前感谢您的帮助。

1 个答案:

答案 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_idGame