我在命名范围上遇到了一些麻烦。具有多个值的命名范围
def self.by_status(status)
arr = status.split(',').map{ |s| s }
logger.debug "RESULT: #{arr.inspect}"
where(status: arr)
end
当我把这个范围有不止一个值,编曲的结果= ["New", "Open"]
这不返回任何结果,而它应该。如果我在控制台中试用这个命令:Shipment.where(status: ['New', 'Open'])
我得到了我期待的结果。
我在这里错过了什么吗?
编辑(添加类方法的调用):
def self.to_csv(options = {}, vendor_id, status)
CSV.generate(options) do |csv|
csv << column_names
if !vendor_id.blank? && status.blank?
by_vendor_id(vendor_id).each do |product|
csv << product.attributes.values_at(*column_names)
end
elsif !vendor_id.blank? && !status.blank?
by_vendor_id(vendor_id).by_status(status).each do |product|
csv << product.attributes.values_at(*column_names)
end
elsif vendor_id.blank? && !status.blank?
logger.debug "by_status result: #{by_status(status).inspect}"
by_status(status).each do |product|
csv << product.attributes.values_at(*column_names)
end
else
all.each do |product|
csv << product.attributes.values_at(*column_names)
end
end
end
end
好吧,你能告诉你如何在你的应用程序中调用类方法'by_status'。顺便说一下你所称的_class method_,而不是_named的scope_。阅读[this](http://blog.plataformatec.com.br/2013/02/active-record-scopes-vs-class-methods/)知道为什么。 –
我会用我的电话更新我的帖子。上下文是,我将参数从我的数据表传递到我的控制器,然后传递给我的模型。我试图使用这些参数导出到csv。 – stoerebink