0

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

したがって、私のアプリでは、ユーザーには多くのビデオがあり、各ビデオには多くの調査 (別名レビュー) があります。Rotten Tomatoes がどのように機能するかを考えてみてください。ユーザーは、ビデオにアクセスするか、レビューを書くためにサインインしています。サインイン中にユーザーが送信したレビューは、自動的にそのユーザーに関連付けられます...これが私のアプリで理解しようとしていることです。

ユーザー ID をレビューに関連付けるにはどうすればよいですか? 現在、ユーザーがサインインすると、そのユーザーが書いたかどうかに関係なく、そのユーザーの名前がす​​べてのレビューに自動的に関連付けられます。

4

2 に答える 2

2

through次のオプションを使用して、ビデオクラスを結合モデルとして使用します。

User
  has_many :surveys, :through => :videos

Survey
  has_one :user, :through => :video

これにより、次のことが可能になります。

@user.surveys
@survey.user
于 2012-08-21T17:19:49.220 に答える
0

これが次のように単純ではない理由はありますか?

User
  has_many :surveys

Survey
  belongs_to :user

その場合、有用な回答を得るには、より多くの情報/コードが必要です。

于 2012-08-21T17:06:42.820 に答える