Rails 4 - 如果条件不适用范围

时间:2014-08-11 10:28:07

标签: ruby-on-rails ruby-on-rails-4 scope

我想创建一个具有某些条件的范围,其中一个返回不是特定范围。目前,该解决方案有效:

scope :my_scope, ->(my_var) {
  scope = where('TRUE')
  if my_var.condition1?
     scope = scope.where({ :some_condition => :some_value })
  end
  if my_var.condition2?
     scope = scope.where({ :some_condition => :some_value })
  end
  scope 
}

还有其他更好的解决方案吗?

此致

1 个答案:

答案 0 :(得分:6)

在Rails 4中,您只需使用all

即可
scope :my_scope, ->(my_var) {
  if my_var.condition?
    where(some_condition: :some_value)
  else
    all
  end
end