Rails:更好地理解动态范围

时间:2013-09-04 02:01:02

标签: ruby-on-rails-3 scopes named-scopes anonymous-scope

这是我的“动态”范围:

  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 scopeshttp://railscasts.com/episodes/112-anonymous-scopes)遇到了Ryan Bate的RailsCast。我修改它,因为我使用Rails 3,但是想知道,如果我在编写动态范围时走的是正确的道路?

我发现自己有时会编写动态范围,因为我正在编写一些复杂的API。

0 个答案:

没有答案