У меня есть две модели Board
и Pictures
, и я хочу, чтобы пользователь мог комментировать либо Board
в целом, либо отдельные Pictures
.
Моя полиморфная модель комментария:
class Comment < ActiveRecord::Base
belongs_to :commentable, polymorphic: true
end
а затем у меня есть простой has_many
в каждой из других моделей:
class Board < ActiveRecord::Base
has_many :comments, as: :commentable, dependent: :destroy
has_many :pictures
class Pictures < ActiveRecord::Base
has_many :comments, as: :commentable, dependent: :destroy
belongs_to :board
Что я действительно хочу сделать, так это добавить новую область, называемую чем-то вроде all_comments
, которая объединяет комментарии из модели Board
с соответствующими комментариями из модели Pictures
. Я могу сделать это с помощью метода, но в итоге я получаю массив, а не отношение с областью действия.
Мой метод:
def all_comments
comments = self.comments
return comments + self.pictures.map {|x| x.comments}.flatten
end
Как я могу вернуть отношение с ограниченной областью действия, которое может связать результаты?