1

为游戏预告片制作一个网站,在首页上我根据游戏的类别组织游戏,所以我最终这样做了(rails):

  def index
    @newGames = Game.order("created_at DESC").limit(3)
    @casualGames = Game.where("category = 'casual'").limit(9)
    @actionGames = Game.where("category = 'action'").limit(8)
    @strategyGames = Game.where("category = 'strategy'").limit(9)
    @adventureGames = Game.where("category = 'adventure'").limit(8)
    @puzzleGames = Game.where("category = 'puzzle'").limit(9)
  end

有没有办法完成同样的事情,但无需对 sable 表进行 6 个单独的查询?

谢谢

4

1 回答 1

0

由于您的搜索参数不同,因此多次查询数据库是不可避免的。但是,您可以使控制器变瘦。在 Game 类中创建一个类方法,并在哈希中收集并返回您需要的所有内容。

游戏.rb

def self.for_index_page
    games = {}
    games.merge!(new: order("created_at DESC").limit(3))
    games.merge!(casual: category_with_limit('casual', 9)
    games.merge!(action: category_with_limit('action', 8)
    ...
end

def self.category_with_limit(category, limit)
    where(category: category).limit(limit)
end

游戏控制器.rb

def index
    @games = Game.for_index_page
end

索引.erb

<%=@games[:new] %>
<%=@games[:casual] %>

...
于 2012-09-17T08:57:57.807 回答