.where数据库查询基于两个不同模型的属性

时间:2017-03-03 06:22:39

标签: ruby-on-rails postgresql activerecord

我有两个模型MemberProfile通过has_one Profile belongs_to的{​​{1}}关联关联。

在数据库中,成员表包含Member:username等列。

:email:first_name列位于个人资料表中。

我正在编写一种方法来执行成员搜索,如下所示:

:last_name

目前,它可以很好地检索与查询匹配的成员到用户名和电子邮件。但是,我想知道是否有修改方法的方法,以便它与 def self.search(search) where("username ILIKE :query OR email ILIKE :query", query: "%#. {search}%") end :first_name模型中不存在的:last_nameMember属性相匹配。

我尝试使用joins方法修改我的members_controller,尝试将两个表混合并在搜索方法中包含Profile属性,但未成功,如下所示:

我控制器中索引方法的相关部分。

if params[:search]
  @members = @community.members.joins(:profile).search(params[:search][:query])
else
  @members = @community.members.order('created_at ASC')
end

修改搜索方法:

  def self.search(search)
    where("username ILIKE :query OR email ILIKE :query OR first_name ILIKE :query", query: "%#{search}%")
  end

感谢您的指导。

1 个答案:

答案 0 :(得分:0)

我使用.join更改控制器的方法实际上工作正常,我在测试被误导认为它不起作用的功能时遇到了问题。抱歉!