0

私はこれらの協会を持っています

class Incident < Activerecord::Base
   belongs_to :building

class Building < Activerecord::Base
   has_many :incidents
   belongs_to :contact

class Contact < Activerecord::Base
    has_many :buildings    
    belongs_to :company

class Company < Activerecord::Base
    has_many :contacts

事件をキーワード検索したい。この検索で​​は、インシデントに関連する企業も検索する必要があります。

したがって、私はこのメソッドを作成しました

def self.filtered
      includes(:building => :contact => :company).where("lower(unaccent(incidents.description)) ilike lower(unaccent('%#{q}%')) or lower(unaccent(companies.name)) ilike lower(unaccent('%#{q}%'))")
end  

残念ながら、これは機能しません。

ActiveRecord::ConfigurationError - Association named 'company' was not found; perhaps you misspelled it?

理由はわかりませんが、「includes」メソッドは 2 つのレベルの関連付けを持つことができますが、3 つのレベルを持つことはできません。

どうすればこの問題を解決できますか?

ありがとう

4

0 に答える 0