Tag: 示波器

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

我想创建一个具有某些条件的范围,其中一个返回不是特定范围。 目前,此解决方案有效: 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 } 还有其他更好的解决方案吗? 问候

Rails,如何将范围与它们之间的“和”运算符链接起来?

我的范围看起来像这样: scope :attr_similar_to, -> (attr, strings) { where(“#{attr} similar to ?”, “%(#{strings})%”) } 我使用这个范围的方法是遍历许多属性,对于每个属性,我将属性与“strings”变量中的一组多个字符串一起发送到范围中,并将其作为“foo | bar”发送到此范围。 |等等”。 因此,对于每个属性,我检查属性值是否与任何字符串相似。 我使用此范围的循环如下所示: results = Model.none attributes.each do |attr| results += attr_similar_to(attr, strings) end 问题是,如果我有两个属性,“name”和“age”,并且只有“name”匹配“foo”,它仍然会获取所有与“foo”匹配的记录。 我希望能够将这些范围调用与它们之间的“和”运算符链接起来,以便例如“name”和“age”都必须匹配每个才能获取任何记录。 我可能试图以错误或低效的方式做到这一点吗?

rails 3.0中的多个范围

我是Rails的初学者,我的范围有问题。 我的课程有两个范围: class Event < ActiveRecord::Base belongs_to :continent belongs_to :event_type scope :continent, lambda { |continent| return if continent.blank? composed_scope = self.scoped composed_scope = composed_scope.where('continent_id IN ( ? )', continent).all return composed_scope } scope :event_type, lambda { |eventType| return if eventType.blank? composed_scope = self.scoped composed_scope = composed_scope.where('event_type_id IN ( ? )', eventType).all return composed_scope } 结束 […]