繁体   English   中英

Rails 搜索查询关联模型

[英]Rails Search Query Associated Model

railscast #37 中,他们展示了我正在尝试实施的简单搜索。 我有以下关联:

class Owner < ActiveRecord::Base
    has_many :dogs
end

class Dog < ActiveRecord::Base
    belongs_to :owner
end

Dog 模型有一个属性“name”,所有者也是。 我需要能够过滤狗的列表,以便如果您输入“Fido”(狗)或“Bob”(所有者)Fido 将显示在列表中。 以下是当前设置的搜索方式:

模型狗.rb:

def self.search(search)
    if search
      find(:all, :conditions => ['name LIKE ?', "%#{search}%"])
    else
      find(:all)
    end
end

这将仅返回匹配狗名的搜索词(忽略所有者名称)

我试着把它改成这样:

  def self.search(search)
    if search
      find(:all, :conditions => ['name LIKE ? or owner.name LIKE ?', "%#{search}%", "%#{search}%"])
    else
      find(:all)
    end
  end

但是据说没有所有者列。 如何更改搜索条件才能同时搜索狗名和主人姓名?

假设按照Rails约定你有一个名为表dogsDog模型和ownersOwner的模型。

更新search方法如下:

  def self.search(search)
    if search
      joins(:owner).where('dogs.name LIKE ? or owners.name LIKE ?', "%#{search}%", "%#{search}%")
    else
      find(:all)
    end
  end

您需要在dogsowners表之间进行连接查询才能访问owners.name字段

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM