У меня есть модель kase, в которой я использую простую форму поиска. Проблема, с которой я столкнулась, - это некоторые казы, связанные с компаниями через модель компании, и люди через модель людей.Рельсы, поиск элементов в разных моделях?
На данный момент мой поиск (в модели Каса) выглядит следующим образом:
# SEARCH FACILITY
def self.search(search)
search_condition = "%" + search + "%"
find(:all, :conditions => ['jobno LIKE ? OR casesubject LIKE ? OR transport LIKE ? OR goods LIKE ? OR comments LIKE ? OR invoicenumber LIKE ? OR netamount LIKE ? OR clientref LIKE ? OR kase_status LIKE ? OR lyingatlocationaddresscity LIKE ?', search_condition, search_condition, search_condition, search_condition, search_condition, search_condition, search_condition, search_condition, search_condition, search_condition])
end
То, что я пытаюсь работать, это то, что состояние я могу добавить, чтобы поиск Компании или лицом, чтобы показать к которым они привязаны.
@kase.company.companyname
и
company.companyname
не работают :(
Возможно ли это
Спасибо,
Дэнни
EDIT:
find(:all, :conditions => ["kase.jobno LIKE :q OR kase.casesubject LIKE :q OR kase.transport LIKE :q OR company.companyname LIKE :q OR person.personname LIKE :q", {:q => search_condition}])
Нравится?
EDIT 2:
модель KASE:
class Kase < ActiveRecord::Base
belongs_to :company # foreign key: company_id
belongs_to :person # foreign key in join table
belongs_to :surveyor,
:class_name => "Company",
:foreign_key => "appointedsurveyor_id"
belongs_to :surveyorperson,
:class_name => "Person",
:foreign_key => "surveyorperson_id"
контроллер KASE:
# SEARCH FACILITY
def self.search(search)
search_condition = "%" + search + "%"
find(:all, :conditions => ['jobno LIKE ? OR casesubject LIKE ? OR transport LIKE ? OR goods LIKE ? OR comments LIKE ? OR invoicenumber LIKE ? OR netamount LIKE ? OR clientref LIKE ? OR kase_status LIKE ? OR lyingatlocationaddresscity LIKE ?', search_condition, search_condition, search_condition, search_condition, search_condition, search_condition, search_condition, search_condition, search_condition, search_condition])
# find(:all, :conditions => ["kases.jobno LIKE :q OR kases.casesubject LIKE :q OR kases.transport LIKE :q OR kases.goods LIKE :q OR kases.comments LIKE :q OR kases.clientref LIKE :q OR kases.kase_status LIKE :q OR kases.lyingatlocationaddresscity LIKE :q OR companies.companyname LIKE :q OR people.personname LIKE :q", {:q => search_condition}], :join => [:person, :company])
end
Это, вероятно, будет более читаемым, если вы переписать запрос типа 'найти (: все,: условия => [" jobno LIKE: ● ИЛИ casesubject НРАВИТСЯ: ● ИЛИ транспорт LIKE: д OR ... ", {: q => search_condition}])' – Voyta