繁体   English   中英

Ruby on Rails ActiveRecord关系无法正常工作?

[英]Ruby on rails ActiveRecord Relation not working?

我有一个问题,我的ActiveRecord :: Relation无法正常工作我有3个Db的Users,Games,Achievements他们之间定义的关系是这样的

用户

has_many :games

游戏

belongs_to :user
has_many :achievements

成就

belongs_to :game

问题是当我尝试致电时

Game.where(:appid => game["appid"]).achievements.new

它给了我错误提示

undefined method `achievements' for #<Game::ActiveRecord_Relation:0x730f9f8>

我在Ruby on Rails 4.1.8上运行,我不知道为什么会发生这种情况(我在Achievements表中确实有belongs_to:game,index:true列,我想不出为什么它不起作用)

您在这里获得关联:

 Game.where(:appid => game["appid"])

...这被实现为一个对象数组(即使sql不返回任何记录,尽管它为空,但它仍然是一个数组)。

您需要选择其中一个...大概是第一个,就像这样:

 Game.where(:appid => game["appid"]).first.achievements.new

或者,您可以运行以下值:

 Game.where(:appid => game["appid"]).each { |game| game.achievements.new }

或类似的东西。

大概应该选择一种型号

Game.where(:appid => game["appid"]).first

然后得到关系模型

.achievements.new

答案是例外。 #where返回ActiveRecord_Relation,而不是Game,即使该关系中只有一个Game。 因此,您确实拥有一个无法计数的东西。 即:

puts Game.where(:appid => game["appid"]).first.achievements.new

如果您只想要第一个符合条件的游戏,则可以使用find_by

Game.find_by(:appid => game["appid"])

但我不确定这就是您要寻找的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM