У меня есть 3 подходящие модели:
class User < ActiveRecord::Base
has_and_belongs_to_many :groups
end
class Group < ActiveRecord::Base
has_and_belongs_to_many :users
has_many :galleries
end
class Gallery < ActiveRecord::Base
belongs_to :group
end
Я хочу иметь возможность создавать пользователей и галереи в группе, чтобы только пользователи, являющиеся членами группы, могли просматривать галереи, принадлежащие этой группе. Я также хочу, чтобы пользователи могли просматривать галереи других групп, к которым они принадлежат (отсюда и ассоциация HABTM).
Мне трудно осмыслить, как это работает с контроллерами, и, возможно, я слишком много думаю о проблеме. Если я создаю группу, а затем иду, чтобы создать пользователя, каков наилучший способ добавления текущего group_id в модель пользователя? То же самое касается модели галереи ...
Это имеет смысл?
Дайте мне знать, если мне нужно уточнить или добавить примеры кода.
Большое спасибо за вашу помощь.
РЕДАКТИРОВАТЬ: Уточнение
Я определенно не имел никакого смысла в своем первоначальном вопросе, но мне удалось найти ответ с помощью друга.
Я закончил тем, что передал group_id в форму через хэш параметров следующим образом:
<%= link_to "Add User", new_admin_user_path(:group_id => @group.id) %>
<%= link_to "Add Gallery", new_gallery_path(:group_id => @group.id) %>
Затем, используя скрытое поле в моей форме, присваивая group_id скрытому полю "group_id":
<%= hidden_field_tag :group_id, params[:group_id] %>
И, наконец, в моих методах создания, добавление этих строк перед сохранением присваивает идентификатор group_id:
# Gallery only has one group
@gallery.group_id = params[:group_id]
# Users can belong to many groups
@user.groups << Group.find(params[:group_id])
Мне все еще нужно сесть и обернуться вокруг ответов, которые вы оба предоставили. Большое спасибо, что нашли время, чтобы помочь мне. Я очень ценю это.