我们正在更新导轨2应用程序。我们很高兴地使用了fake_arel,它提供了一个非常好的'或'范围。导轨3 - '或'示波器
现在,与轨3我无法找到一种方法来复制这一点。
我们有这样的代码:
scope.or(Event.horse, Event.dog, Event.trap).today
这个模型看起来是这样的:
class Event < ActiveRecord::Base
named_scope :horse, lambda { {:conditions => ["sport_category_id in (?)", SportCategory.find_horse_ids] }}
named_scope :dog, lambda { {:conditions => ["sport_category_id in (?)", SportCategory.find_dog_ids] }}
named_scope :trap, lambda { {:conditions => ["sport_category_id in (?)", SportCategory.find_trap_ids] }}
end
这些示波器必须是独立的,并用于所有的地方。这个模型实际上有几十个组合使用的范围,所以重写它们是我们想要做的最后一件事。
看起来很奇怪,你不能'或'范围在一起。
有人可以提出一种方法来做到这一点在Rails 3中很好吗?即使使用arel我也看不到如何。 我们在不同的项目中使用meta_where,但它也不提供任何这样的事情。
也许我不明白在哪里把这个。如果我把它放在我的事件模型上(像这样:scope:find_scope,where(:event => ['horse','dog','trap']))我得到:ActiveRecord :: StatementInvalid:没有名为'event '存在表'事件' – phil
这就是为什么我写道:适应您的需求!如果你在这里发布你的模型,我会帮你弄明白。 –
我已更新模型。我看不出你在做什么以任何方式调用现有的范围,这是整个问题。 – phil