mysql – Ruby on Rails中的自定义搜索
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – Ruby on Rails中的自定义搜索,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1428字,纯文字阅读大概需要3分钟。
内容图文
![mysql – Ruby on Rails中的自定义搜索](/upload/InfoBanner/zyjiaocheng/907/77ff9b16d1d84cbea66bac21af4f8a4c.jpg)
我正在尝试在我的Rails应用程序中实现自定义搜索功能.
我有3个表用户公司和公司用户
我宣布的关系如下
class CompanyUser < ActiveRecord::Base
belongs_to :company
belongs_to :user
...
end
在Company.rb
has_many :company_users, dependent: :destroy
has_many :users, through: :company_users
在User.rb中
has_many :company_users, dependent: :destroy
has_many :companies, through: :company_users
在我的视图页面中,我列出了所有使用company_users表的公司
现在我有一个搜索字段,我可以在其中键入一个名称,用于过滤此公司用户列表.
我正在调用我的CompanyUsers表中的方法来过滤搜索结果
@company_users = CompanyUser.all
if params[:search_data].present?
@company_users = @company_users.filter_company_users(params[:search_data])
end
其中,当在搜索字段中输入搜索数据时,将params [:search_data]传递给相同的方法.
这是进行搜索过滤的方法.
def self.filter_company_users(search_data)
where('company_id like (?)', "%#{search_data}%")
end
现在,只有在该搜索字段中输入正确的CompanyUser表ID,才能得到结果.我要做的是使用User表和Company Table中的字段进行搜索.例如来自用户的电子邮件和来自公司的名称.
解决方法:
class CompanyUser
def self.search(search_data)
search = self.joins(:company, :user)
search.where!('company_users.company_id LIKE :query OR users.email LIKE :query OR companies.name LIKE :query', query: "%#{search_data}%")
search
end
end
使用join语句,您可以将CompanyUser表与公司和用户一起加入,因此您也可以在该表上应用过滤器.
where条件重用相同的查询字符串,并将OR中的搜索应用于要搜索的所有列.
内容总结
以上是互联网集市为您收集整理的mysql – Ruby on Rails中的自定义搜索全部内容,希望文章能够帮你解决mysql – Ruby on Rails中的自定义搜索所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。