我有两个模型Member
和Profile
通过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_name
和Member
属性相匹配。
我尝试使用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
感谢您的指导。
答案 0 :(得分:0)
我使用.join更改控制器的方法实际上工作正常,我在测试被误导认为它不起作用的功能时遇到了问题。抱歉!