2012-09-17 91 views
1

製作遊戲預告片,並在頭版我安排在各自類別方面的遊戲網站,所以我最終會做這個(護欄):多個字符串查詢單個表

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 

有一種方法來完成同樣的事情,但沒有對黑貂表進行6個單獨的查詢?

感謝

回答

0

當你的搜索參數不同的查詢DB多次是不可避免的。但是你可以讓你的控制器變得很瘦。在Game類中創建一個類方法,並在hash中收集並返回所需的所有內容。

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 

GamesController.rb

def index 
    @games = Game.for_index_page 
end 

index.erb

<%[email protected][:new] %> 
<%[email protected][:casual] %> 

... 
相關問題