这是我的“动态”范围:
def all_games(conditions = {})
scope = games.includes(:stats).scoped {}
scope = scope.where sport_position_id: conditions[:sport_position_id] unless conditions[:sport_position_id].nil?
scope = scope.where sport_id: conditions[:sport_id] unless conditions[:sport_id].nil?
scope = scope.where team: conditions[:team]
scope.order(:date)
end
上述方法位于我的User
模型中包含的模块中。
所以你可以在代码中访问它,如下所示:
u = User.find(1)
u.all_games(sport_position_id: params[:sport_position_id], sport_id: current_sport.id, team: params[:team])
在Google搜索动态范围时,我在anonymous scopes
(http://railscasts.com/episodes/112-anonymous-scopes)遇到了Ryan Bate的RailsCast。我修改它,因为我使用Rails 3,但是想知道,如果我在编写动态范围时走的是正确的道路?
我发现自己有时会编写动态范围,因为我正在编写一些复杂的API。