Ruby on rails 使用通配符搜索Rails范围
我想在我的搜索中添加使用通配符的功能。我将Rails3与SQLite3一起使用。我的搜索使用模型中定义的范围内置到控制器的索引操作中Ruby on rails 使用通配符搜索Rails范围,ruby-on-rails,ruby-on-rails-3,search,sqlite,wildcard,Ruby On Rails,Ruby On Rails 3,Search,Sqlite,Wildcard,我想在我的搜索中添加使用通配符的功能。我将Rails3与SQLite3一起使用。我的搜索使用模型中定义的范围内置到控制器的索引操作中 scope :by_drawing_number, lambda { |drawing_number| where('drawing_number LIKE ?', "#{drawing_number}") unless drawing_number.nil? } 我想对此进行修改,以便在用户输入“?”时,对于单字符通配符,它将被替换为“u”,对于多字符通配符,
scope :by_drawing_number, lambda { |drawing_number| where('drawing_number LIKE ?', "#{drawing_number}") unless drawing_number.nil? }
我想对此进行修改,以便在用户输入“?”时,对于单字符通配符,它将被替换为“u”,对于多字符通配符,它将被替换为“%”
有没有办法将这些替换合并到我的作用域中,或者我需要将作用域作为一种方法重写?如果是这样,该方法应该是什么样的?您可以将任何需要的逻辑放入范围内
scope
基本上只是定义类方法的语法糖。这样的事情应该行得通:
scope :by_drawing_number, lambda {|drawing_number|
break if drawing_number.nil?
match = drawing_number.tr('?*', '_%')
where('drawing_number LIKE ?', match)
}
完美的谢谢唯一的问题是什么?而且uu应该被切换。