![](/img/trans.png)
[英]Ruby on Rails - ActiveRecord::Relation count method is wrong?
[英]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.