Советы по настройке модели Rails с несколькими отношениями - PullRequest
1 голос
/ 15 июля 2011

Готовлюсь к проектному решению и ищу небольшую валидацию или совет по "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 подход?

...