У меня есть следующие модели:Rails 3: Полиморфный кондиционер запрос
class Notification < ActiveRecord::Base
belongs_to :notificatable, polymorphic: true
end
class BounceEmailNotification < ActiveRecord::Bas
has_one :notification, :as => :notificatable, :dependent => :destroy
end
class UserNotifierEmailNotification < ActiveRecord::Base
has_one :notification, :as => :notificatable, :dependent => :destroy
end
Как вы можете видеть, уведомление может быть типа «отскок по электронной почте уведомление» или «пользователь уведомитель уведомления по электронной почте». Модель BounceEmailNotification
имеет атрибут строки события. Что делать, если я хочу получить все уведомления об уведомлениях пользователей и все уведомления об отказе электронной почты, имеющие конкретное значение события, упорядоченное по created_at
?
Что-то вроде этого (с использованием squeel):
(Notification.joins{ notificatable(BounceEmailNotification) }.where('bounce_email_notifications.event' => 'error') + Notification.joins { notificatable(UserNotifierEmailNotification) }).sort_by { |n| n.created_at }
будет работать, но я не хочу использовать Ruby, чтобы заказать уведомления. Что я могу сделать? Спасибо