Lev*_*Lev 3 search ruby-on-rails-3
我很新,在Rails中搜索数据库.我有一个模型和数据库,在'name'属性下有一个名称列表.我希望能够将搜索关键字输入到单个搜索字段中,并且此输入可以是一个字或两个字或更多,具体取决于用户想要的结果的具体程度.
现在,我正在使用如下所示的丑陋内容,最多可以执行3个搜索字词.有没有办法让'search_length'关键字成为动态?find方法显然是重复的,但我不确定如何自动化它并且在其他地方没有找到任何有用的建议.
def self.search(search)
if search
search_length = search.split.length
find(:all, :conditions => ['name LIKE ? AND name LIKE ? AND name LIKE ?',
"%#{search.split[0]}%", "%#{search.split[1]}%",
"%#{search.split[search_length1]}%"])
else
find(:all)
end
end
Run Code Online (Sandbox Code Playgroud)
除此之外,到目前为止,爱Rails.
非常感谢Lev
小智 7
如果您使用其他%符号关闭名称变量,则ŁukaszŚliwa的代码效果很好.
上面的完整代码为我工作.好帖子.
def self.search(search)
if search
search_length = search.split.length
find(:all, :conditions => [(['name LIKE ?'] * search_length).join(' AND ')] + search.split.map { |name| "%#{name}%" })
else
find(:all)
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4749 次 |
| 最近记录: |