修改rails中的简单搜索以搜索链接数据?

时间:2011-01-13 20:29:17

标签: mysql ruby-on-rails ruby ruby-on-rails-3

我跟着:http://railscasts.com/episodes/37-simple-search-form(虽然是更新后的版本)来实现对我的应用的搜索。

现在搜索时,它会搜索1个表格。如果该表链接到另一个表或连接表怎么办?有没有办法让它搜索这些字段。

我这样说,因为目前我正在从一张桌子搜索字段:

def self.search(search)
    if search
      where('LOWER (description) LIKE ? OR LOWER (title) LIKE ?', "%#{search}%" , "%#{search}%")
    else
      scoped
    end
  end

但我真的很喜欢搜索链接表。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

是的,您可以添加联接到查找

# models/project.rb
def self.search(search)
  if search
    find(:all, :joins => :other_model, :conditions => ['projects.name LIKE :search or other_models.name LIKE :search', {:search => "%#{search}%"}])
  else
    find(:all)
  end
end

好的,这将是未来更好的例子

  def self.search(search)
      if search
        joins(:other_model).where('LOWER (projects.description) LIKE ? or LOWER (other_models.name) LIKE ?', "%#{search}%", "%#{search}%")
      else
        scoped
      end
    end

答案 1 :(得分:0)

你可以看看searchlogic(它在github上有一个rails 3分支)它使搜索更容易!