我在仅对 Activity 对象执行查询时遇到问题。我在数据库中没有 Activity 列,而是在模型Game上具有以下方法:
def complete?
self.winner ? true : false
end
这样,如果游戏有赢家,
#complete?
将返回true。我想查询所有将为此方法返回false的游戏,是否可以通过ActiveRecord做到这一点?现在,在我的 Controller 中,我只是调用@games = Game.all
,然后在我的部分渲染游戏中,例如:<% unless game.complete? %>
yada yada
<% end %>
这似乎有点hacky,如果我想显示“已完成”的游戏,将需要我编写不同的部分。无论如何,我想知道 Controller 中是否有一种方法只能分配从模型方法返回true/false的对象?
最佳答案
快速简便的类方法呢?
class Game < ActiveRecord::Base
def self.completed_games
games = []
Game.all.each { |game| games << game if game.complete? }
return games
end
end
然后调用
Game.completed_games
。您也可以为不完整的游戏制作一个。您也可以将该方法制作成一行,但我将其分解了一下,以便您可以确切地了解发生了什么。