【问题标题】:Better way to write named scope?编写命名范围的更好方法?
【发布时间】:2011-07-04 11:53:51
【问题描述】:

这个命名范围工作正常。

named_scope :search, lambda {|search_txt|
      {
        :conditions => ["field1 like ? or field2 like ? or field3 like ?","#{search_txt}%","#{search_txt}%","#{search_txt}%"]
      }
  }

而不是在条件中写三次 search_txt。我可以在条件下只传递一次 search_txt 来处理相同的场景吗?

类似

named_scope :search, lambda {|search_txt|
      {
        :conditions => ["field1 like ? or field2 like ? or field3 like ?","#{search_txt}%"]
      }

}

【问题讨论】:

    标签: ruby-on-rails ruby named-scope


    【解决方案1】:

    我不知道这是否适用于范围,但还有另一种写条件的方法:

    MyModel.all(:conditions=>['field_1 LIKE :q OR field_2 LIKE :q OR field_3 LIKE :q', {:q=> 'search_txt'}])
    

    【讨论】:

      【解决方案2】:

      这应该可行:

      named_scope :search, lambda {|search_txt|
        {
          :conditions => ["field1 like :q or field2 like :q or field3 like :q",{:q => "#{search_txt}%"}]
        }
      

      }

      【讨论】:

        猜你喜欢
        • 2013-09-18
        • 1970-01-01
        • 1970-01-01
        • 2010-11-06
        • 1970-01-01
        • 2019-08-04
        • 1970-01-01
        • 2021-10-29
        • 1970-01-01
        相关资源
        最近更新 更多