Готовлюсь к проектному решению и ищу небольшую валидацию или совет по "Rails way", прежде чем продолжить.
Резюме:
- Пользователи Создать Сообщений
- Сообщения могут включать (один или несколько) Фотографии
- Сообщения могут (необязательно) быть связаны с событием
- В свою очередь, фотографии из сообщения также связаны с указанным событием
Одним из требований, помимо прочего, было бы легкое отображение всех фотографий с данного события.Другой будет показывать все фотографии, представленные данным пользователем.
Я изначально предполагал:
class Photo < ActiveRecord::Base
belongs_to :post
belongs_to :user
belongs_to :event
...
end
Но у меня возникают проблемы при построении всех отношений в контроллере Post:
class PostsController < ApplicationController
before_filter :login_required, :except => [:index, :show]
def create
@user = User.find(session[:user_id])
@post = @user.posts.create(params[:post])
# how/where to assign Event?
...
end
...
end
Я могу выполнить цикл и build
каждый :photo
параметр в модели Post ... но не уверен, как / где назначить event_id
?Что заставляет меня задуматься, может быть, есть лучший подход?
Возможно, мне следует изучить has_many :through
отношения, где:
Пользователь has_many :photos, :through => :posts
Событие has_many :photos, :through => :posts
В двух словах, я должен хранить user_id & event_id на каждой фотографии, чтобы было проще захватывать их по мере необходимости? Если да, то как лучше назначить ассоциации?Или это станет трудно поддерживать и, таким образом, в целом будет осуждено, и я должен использовать has_many :through
подход?