Сейчас я начинаю создавать свои сайты в Ruby on Rails вместо PHP.
Я легко освоил язык, но все еще не уверен на 100% в ассоциациях:)
У меня такая ситуация:
Модель пользователя
has_and_belongs_to_many :roles
Модель ролей
has_and_belongs_to_many :users
Модель журнала
has_and_belongs_to_many :roles
Итак, у меня есть roles_users
стол и journals_roles
стол
Я могу получить доступ к ролям пользователя следующим образом:
user = User.find(1)
User.roles
Это дает мне роли, назначенные пользователю, и я могу получить доступ к модели журнала следующим образом:
journals = user.roles.first.journals
Это дает мне журналы, связанные с пользователем, на основе ролей. Я хочу иметь возможность доступа к журналам, как это user.journals
В моей пользовательской модели я пробовал это:
def journals
self.roles.collect { |role| role.journals }.flatten
end
Это приводит меня к журналам в едином массиве, но, к сожалению, в этом случае я не могу получить доступ к чему-либо, связанному с журналами, например, в модели журналов:
has_many :items
Когда я пытаюсь получить доступ к user.journals.items
, он не работает, так как это плоский массив, к которому я пытаюсь получить доступ к ассоциации has_many.
Можно ли получить user.journals
другим способом, отличным от того, который я показал выше с помощью метода сбора?
Надеюсь, вы, ребята, понимаете, что я имею в виду, если не дадите мне знать, и я постараюсь объяснить это лучше.
Приветствия
Eef