Rails 3:用户has_many关联ID?

时间:2012-08-21 16:50:08

标签: ruby-on-rails ruby-on-rails-3

我的Rails 3应用程序中有3个模型:

用户

模型:

has_many :videos, :dependent => :destroy

控制器:

before_filter :signed_in_user
def show
  @user = User.find(params[:id])
end

def signed_in_user
  unless signed_in?
    store_location
  redirect_to signin_path, notice: "Please sign in."
  end
end

视频

模型:

belongs_to :user
has_many :surveys, :dependent => :destroy

控制器:

before_filter :signed_in_user

def signed_in_user
  unless signed_in?
    store_location
  redirect_to signin_path, notice: "Please sign in."
  end
end

  def show
    @video = Video.find(params[:id])
    @original_video = @video.panda_video
    @h264_encoding = @original_video.encodings["h264"]
    @surveys = Survey.all
    @user = User.find(params[:id])
  end

调查

模型:

belongs_to :video

控制器:

 before_filter :signed_in_user

def signed_in_user
  unless signed_in?
    store_location
  redirect_to signin_path, notice: "Please sign in."
  end
end

  def show
    @survey = Survey.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @survey }
    end
  end

所以在我的应用程序中,用户有很多视频,每个视频都有很多调查(a.k.a.评论)。想想烂番茄的运作方式。用户已登录以访问视频或撰写评论。用户在登录时提交的任何评论都会自动与该用户关联...这就是我正在尝试用我的应用程序解决的问题。

如何将用户ID与评论相关联?现在,当用户登录时,他的名字会自动与所有评论相关联,无论他是否写过。

2 个答案:

答案 0 :(得分:2)

您希望通过through选项将您的Video类用作连接模型:

User
  has_many :surveys, :through => :videos

Survey
  has_one :user, :through => :video

这应该让你这样做:

@user.surveys
@survey.user

答案 1 :(得分:0)

是否有一些原因并不像以下那样简单:

User
  has_many :surveys

Survey
  belongs_to :user

如果是这样,有用答案需要更多信息/代码。