У меня есть четыре модели класса:has_many: через ассоциацию через два различных ассоциаций
class Group < ActiveRecord::Base
has_many :projects
has_many :personal_blogs
end
class Project < ActiveRecord::Base
has_many :events, :as => :event_producer
end
class PersonalBlog < ActiveRecord::Base
has_many :events, :as => :event_producer
end
class Event < ActiveRecord::Base
belongs_to :event_producer, :polymorphic => true
end
Я хочу найти все события для определенной группы. Я полагаю, что это has_many: через объединение, но как указать has_many в группе, которая находит все события в проектах или personal_blogs группы? Я мог бы, конечно, указать две ассоциации и объединить результаты, но затем мне нужно повторно сортировать, ограничивать, условие и т. Д. В Ruby, что потенциально может быть кошмаром производительности со многими событиями. Я бы хотел сделать это в ActiveRecord, чтобы избежать такого кошмара.
Это на самом деле не работает для меня, потому что мне нужно ограничить поиск конкретной группы. Ссылка на группу полиморфна через соединение, что делает SQL значительно более сложным. – wolak
Это фактически запрещено Группой. Обратите внимание, что я использую коллекции «project_ids» и «personal_blog_ids», которые уже фильтруют проекты и личные_блоки, которые не принадлежат к фактической группе. – fjuan