【发布时间】:2014-10-04 03:41:39
【问题描述】:
我想创建一个具有某些条件的范围,其中一个返回的不是特定范围。目前,此解决方案有效:
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
}
还有其他更好的解决方案吗?
问候
【问题讨论】:
-
我很确定您可以放心地在 where 之前省略
.。我在我的代码中使用了相同的解决方案并且效果很好。考虑给出一个不太通用的答案以获得深入的答案。 -
@MichalSzyndel 已修复。
-
是的,但我的问题实际上是关于
my_var以及您检查它的什么样的条件?根据这一点,您可能会以不同的方式处理此问题。正如我所说,我自己在作用域中使用条件,但不会说我认为这是一个很好的做法。
标签: ruby-on-rails ruby-on-rails-4 scope