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 があり、firstname lastname または company.name が q に似ているすべての従業員を選択したいと考えています。

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

レールでこれを達成する最良の方法は何ですか?

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

このすばらしい回答で述べたように、ここに行く方法は、SQLではなく検索gemを使用することです。

主要な候補者はThinkingSphinxです。

同じスレッドからの別の有用な答えは次のようになります: https ://stackoverflow.com/a/4037835/690866 私が正しく理解していれば、彼はあなたが達成したいことを示しています。

それが役に立てば幸い。

于 2013-01-15T21:27:13.883 に答える