我的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与评论相关联?现在,当用户登录时,他的名字会自动与所有评论相关联,无论他是否写过。
答案 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
如果是这样,有用答案需要更多信息/代码。