2

我以下型号

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 并且想选择所有名字姓氏或 company.name 像 q 的员工,沿着这个查询非工作查询的行

Employee.where("firstname like ? or lastname like ? or company.name like ?", q,q,q)

用 Rails 实现这一目标的最佳方法是什么?

4

2 回答 2

6

试试这个:

Employee.joins(:company).where("employees.firstname like ? or employees.lastname like ? or companies.name like ?", '%q%', '%q%', '%q%')
于 2013-01-15T21:17:09.643 回答
0

正如这个很好的答案中提到的,这里的方法是使用搜索 gem 而不是 SQL。

领先的候选人是Thinking Sphinx

来自同一个线程的另一个有用的答案是: https ://stackoverflow.com/a/4037835/690866 如果我理解正确的话,他在那里展示了你想要实现的目标..

希望能帮助到你。

于 2013-01-15T21:27:13.883 回答