以下模型
class Company < ActiveRecord::Base
attr_accessible :name, address, ........
has_many :employees
end
class Employee < ActiveRecord::Base
attr_accessible :firstname, :lastname, :company_id, .............
belongs_to :company
end
我有一个字符串q,并希望选择所有的员工谁的名字,姓氏或公司。名称类似于q,这一行的查询非工作查询
Employee.where("firstname like ? or lastname like ? or company.name like ?", q,q,q)
用rails实现这一点的最佳方法是什么?
试试这个:
Employee.joins(:company).where("employees.firstname like ? or employees.lastname like ? or companies.name like ?", '%q%', '%q%', '%q%')
正如在这个伟大的答案中提到的,这里的方法是使用搜索gem而不是SQL。
领先的候选人是思芬克斯。
来自同一线程的另一个有用的答案是:https://stackoverflow.com/a/4037835/690866如果我没理解错的话,他展示了你想要达到的目标。
希望能有所帮助。