Я пытаюсь сохранить вызов в методе моего контроллера
current_user.posts.includes([:events, :schedule])
Это работает, когда current_user - пользователь, но не работает, когда current_user - менеджер, так как перезапись сообщений в модели менеджера возвращает массив. Мой вопрос заключается в том, как я могу заставить этот метод контроллера работать с включениями: events и: schedule для обоих типов пользователей? Вот как мне настроить мои модели:
Class Post < ApplicationRecord
has_one :schedule
has_many :targets, through: schedule
end
Class User < ApplicationRecord
has_many :targets
has_many :schedules, through: :targets
has_many :posts, through: :schedules
end
У меня есть модель менеджера, которая наследует от пользователя
Class Manager < User
has_many :created_posts, class_name :Post
def posts
# Here is where I'm trying to figure out the combination of both User.posts and Manager.created_posts
end
end
Пользователь has_many: сообщения, если они были отправлены, используя таблица целей и расписание. Менеджер has_many: сообщения такие же, как и у пользователя, но он также должен видеть их: made_posts, включенные в коллекцию.
Вот некоторые из вещей, которые я пробовал:
def posts
super.or(created_posts) # ArgumentError (Relation passed to #or must be structurally compatible. Incompatible values: [:joins])
end
def posts
super.includes(created_posts) # ArgumentError (#<Post> was not recognized for preload)
end
def posts
super + created_posts # NoMethodError (undefined method `includes' for #<Array:0x00007fda1884a6a8>)
end
Любые идеи или советы о том, как улучшить мою структуру ценятся, спасибо!