这是我的“动态”范围:
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])
anonymous scopes
在 Google 搜索动态范围时,我在( http://railscasts.com/episodes/112-anonymous-scopes )上遇到了 Ryan Bate 的 RailsCast 。我在使用 Rails 3 后对其进行了修改,但想知道在编写动态范围时我是否走在正确的道路上?
由于我正在编写的一些复杂 API 的性质,我发现自己有时会编写动态范围。