问题链接Rails关联

时间:2011-05-07 03:20:30

标签: ruby-on-rails

我有点像Rails的初学者,并且不能动摇我忽略了一些愚蠢的感觉,但是这里有。我正在构建一个简单的在线游戏,允许一个用户“挑战”另一个用户,我有以下模型:

class User < ActiveRecord:Base
  has_one :challenge
end

class Challenge < ActiveRecord:Base
  belongs_to :user
  belongs_to :target, :class_name => 'User'
end

数据库字段是您所期望的:Challengeuser_idtarget_idUserusername和一些与密码相关的字段

在空数据库中,我创建了两个用户(接收ID为1和2)和一个带有Challengeuser_id 1的{​​{1}}。从控制台,target_id 2按预期返回用户2。 期望的是Challenge.find(1).target不返回用户2,而是User.find(1).challenge.target本身!

毋庸置疑,我迷失在这里。看起来这个基本应该是Just Work(tm)。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你这里做错了。用户有一个挑战应该是:

class User < ActiveRecord:Base
  has_one :challenge
end

class Challenge < ActiveRecord:Base
  belongs_to :user
end

现在,挑战只是有一个user_id,你现在可以使用:

user.challenge

接受挑战。然后,你就可以为挑战者提供challenger_id。

如果您想根据challenger_id获得挑战,您只需创建一个查找器或范围,如:

Challenge.find_by_challenger_id(..)

编辑 - 我的评论中的解决方案:

  嗯,我认为目标是一个   关联方法。尝试改为   像挑战者一样,我想   它会起作用。