我在仅对 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。您也可以为不完整的游戏制作一个。您也可以将该方法制作成一行,但我将其分解了一下,以便您可以确切地了解发生了什么。

07-24 09:49
查看更多