关于设置具有多个关系的Rails模型的建议(belongs_to)

时间:2011-07-15 16:20:08

标签: ruby-on-rails has-many has-many-through

在继续之前,要做出设计决定并在“Rails方式”上寻找一些验证或建议。

摘要:

  • 用户创建帖子
  • 帖子可以包含(一个或多个)照片
  • 帖子可以(可选)与事件
  • 相关联
  • 反过来来自帖子的照片也与所述活动相关

其中一个要求是轻松显示给定事件的所有照片。另一个将显示给定用户提交的所有照片。

我最初假设:

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

我可以在Post模型中循环遍历build每个:photo参数...但不确定如何/在何处分配event_id?这让我想知道是否有更好的方法?

也许我应该探索has_many :through关系:

用户has_many :photos, :through => :posts

活动has_many :photos, :through => :posts

简而言之,我应该存储user_id&amp;每张照片中的event_id都可以根据需要更轻松地抓取它们?如果是这样,如何最好地分配关联?或者,这会变得难以维护,因此通常不赞成,我应该使用has_many :through方法吗?

0 个答案:

没有答案