Rails - 根据关联值搜索对象

时间:2016-10-21 15:27:01

标签: sql ruby-on-rails associations

我有两个模型CompanyInsuredObjectCompany has_many InsuredObjects和反向belongs_to。目前,我有一个功能正常的搜索InsuredObject(s),它返回包含搜索输入的所有对象,如下所示:

# /models/insured_objects.rb

def self.search(search)
  query = "%#{search}%"
  if search
    where("object LIKE ? OR insurance_type LIKE ? OR class_code LIKE ? OR information LIKE ?", 
        query, query, query, query)
  end
end

和:

# /controllers/insured_objects_controller.rb

def index
  @insured_objects = InsuredObject.search(params[:search])
end

每个Company都有is_active个属性。我正在尝试一种方法来搜索相同的内容,但只返回InsuredObject Company is_active attrutbute true的{​​{1}}。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

从活跃公司获取InsuredObject的所有条目:

InsuredObject.joins(:company).where(companies: {is_active: true})

joins(:company)中,:company是关联名称(在InsuredObject中您应该belongs_to :company

where(companies: ...中,:companies是模型Company的表名