Named_scope 与 lambda rails 4
Named_scope with lambda rails 4
我需要将其重构为 rails 4 样式
型号名称Invoice
我有
named_scope :with_name_like, lambda { |name|
name.blank? ? {} : { :conditions => ['LOWER(name) LIKE ?', "%#{name.downcase}%"], :joins => :client }
}
我做到了
def self.with_name_like
->(name){where('LOWER(name) LIKE ?', "%#{name.downcase}%").joins(:client)}
end
但得到
Invoice.with_name_like
=> #<Proc:0x00000004f35d50@/home/stasyan/current/app/models/invoice.rb:23 (lambda)>
如何将三元运算符放入此方法?使用 lambda?
以及如何使用最新语法
named_scope :ordered, :order => "date DESC"
谢谢
您可以简单地使用 all
:
scope :with_name_like, ->(name) {
name.blank? ? all : where('LOWER(name) LIKE ?', "%#{name.downcase}%").joins(:client)
}
我建议
def self.with_name_like(name)
if name
where('LOWER(name) LIKE ?', "%#{name.downcase}%").joins(:client)
else
self
end
end
我更喜欢 class 方法而不是参数化范围定义。
我需要将其重构为 rails 4 样式
型号名称Invoice
我有
named_scope :with_name_like, lambda { |name|
name.blank? ? {} : { :conditions => ['LOWER(name) LIKE ?', "%#{name.downcase}%"], :joins => :client }
}
我做到了
def self.with_name_like
->(name){where('LOWER(name) LIKE ?', "%#{name.downcase}%").joins(:client)}
end
但得到
Invoice.with_name_like
=> #<Proc:0x00000004f35d50@/home/stasyan/current/app/models/invoice.rb:23 (lambda)>
如何将三元运算符放入此方法?使用 lambda?
以及如何使用最新语法
named_scope :ordered, :order => "date DESC"
谢谢
您可以简单地使用 all
:
scope :with_name_like, ->(name) {
name.blank? ? all : where('LOWER(name) LIKE ?', "%#{name.downcase}%").joins(:client)
}
我建议
def self.with_name_like(name)
if name
where('LOWER(name) LIKE ?', "%#{name.downcase}%").joins(:client)
else
self
end
end
我更喜欢 class 方法而不是参数化范围定义。