我有
class Foo < ActiveRecord::Base
named_scope :a, lambda { |a| :conditions => { :a => a } }
named_scope :b, lambda { |b| :conditions => { :b => b } }
end
我想要
class Foo < ActiveRecord::Base
named_scope :ab, lambda { |a,b| :conditions => { :a => a, :b => b } }
end
但我更愿意以干燥的方式进行。我可以通过使用获得相同的效果
Foo.a(something).b(something_else)
但它不是特别可爱。
最佳答案
好吧,我还是 Rails 的新手,我不确定您在这里要做什么,但是如果您只是要重用代码,为什么不使用常规类方法呢?
def self.ab(a, b)
a(a).b(b)
end
您可以通过使用 *args 而不是 a 和 b 来使其更加灵活,然后可能使其中一个成为可选。如果您被卡在named_scope上,您难道不能将其扩展为做相同的事情吗?
如果我对您想要做的事情完全不了解,请告诉我。
关于ruby-on-rails - 有没有办法将命名范围组合成一个新的命名范围?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29011/