После очень долгих поисков я наконец задаю этот вопрос:
Как мне сделать запрос условий OR с ActiveRecord :: Relation в Rails 3.0? По сути, я считаю, что это как-то связано с областью видимости и прочим ....
Вот что у меня есть:
class Practice < ActiveRecord::Base
attr_accessible :name
has_and_belongs_to_many :doctors
has_and_belongs_to_many :services
end
class Doctor < ActiveRecord::Base
attr_accessible :first_name, :last_name
has_and_belongs_to_many :practices
has_and_belongs_to_many :services
end
class Service < ActiveRecord::Base
attr_accessible :name, :about
has_and_belongs_to_many :practices
has_and_belongs_to_many :doctors
end
То, чего я хочу добиться, - это форма, в которой я могу выполнять поисковые запросы и возвращать объект ActiveRecord :: Relation (так что я могу использовать его с will_paginate и т. Д.) Со списком практик. В запросе должна быть найдена любая практика, где @ practice.name совпадает с query_string ИЛИ, где @ practice.doctors.first_names соответствует query_string ИЛИ, где @ practice.doctors.last_names совпадает с query_string ИЛИ @ Practice.services.names совпадает с query_string Другими словами - скажем, строка запроса соответствует имени Сервиса, который я хотел бы получить обратно к списку Практик, связанных с этим Сервисом. Или если first_name или last_name Доктора совпадает с query_string, тогда я получаю Практики, связанные с этим Доктором / Докторами. И конечно старый добрый матч по Practice.name тоже: D
Я понимаю, что мои ассоциации has_and_belongs_to_many здесь не очень хороши, это просто для демонстрации, но я был бы рад узнать, может ли кто-нибудь помочь с миграциями и ассоциациями для моего случая.
Спасибо.
P.S. как я уже сказал, я использую Rails 3.0 и считаю, что это должно что-то делать с областями видимости (но я могу ошибаться, конечно). Также я попробовал MetaWhere, но не смог заставить его работать ....: (