我已经定义了一个模型中的两个范围样的方法:红宝石自我的方法链
def self.foo var
where(foo: var)
end
def self.bar var
where(bar: var)
end
我希望能够通过零到这些方法中的一个,并把它有效地忽略。所以:
var1 = 10
var2 = nil
# ...
Model.foo(var1).bar(var2)
我已经尝试了各种东西,如:
def self.bar var
return self if var.nil?
where(bar: var)
end
但在上述情况下,self
不返回什么这种方法已经从以前的方法链中获得通过,它返回Model
,因此我失去了在foo
中完成的所有工作。
我怎样才能达到我想要的?
你尝试像'所有()'如果它是零?我不知道这是否可行。我也不是这种模式的粉丝;我认为这是误导。 –
我尝试过'all',但是它返回一个数组,所以如果我有另一个范围,我会得到'未定义的方法',例如'for#