2012-04-17 16 views
0

私は以下の3つのモデルを持っており、投稿(user_id(Userモデルから)とreview_id(Reviewモデルから))への投稿に2つの外部キーを関連付ける。私は、これはreview_idのためにも行わ取得については移動する方法については、以下のではなく、必ずリンクに与えられた溶液を用いて作成上の目標に「CURRENT_USER」を使用してのuser_idを関連付けるために管理する。作成時投稿に2つの外部キーを関連付ける方法

感謝。

Devise how to associate current user to post?

マイモデル:

class User < ActiveRecord::Base  
    has_many :reviews 
    has_many :periods, :through => :reviews 
    has_many :goals 
end 

class Review < ActiveRecord::Base  
    belongs_to :user 
    belongs_to :period 
    has_many :goals 
end 

class Goal < ActiveRecord::Base  
    belongs_to :user 
    belongs_to :review 
end 

マイgoals_controller.rb

def create 
    @goal = current_user.goals.build(params[:goal]) 

    respond_to do |format| 
    if @goal.save 
     format.html { redirect_to @goal, notice: 'Goal was successfully created.' } 
     format.json { render json: @goal, status: :created, location: @goal } 
    else 
     format.html { render action: "new" } 
     format.json { render json: @goal.errors, status: :unprocessable_entity } 
    end 
    end 
end 

乾杯、 Azren

+0

'User'モデルを2回投稿しました。 – jdoe

+0

Opps ...が修正されました。 – Azren

+0

再度確認してください。それでも2つの 'class User'ステートメントがあります。あなたは自分のコンテンツを修正しましたが。 – jdoe

答えて

0

私は目標が何であるかを理解していませんが。私が普段使っている一般的な方法の1つは、あなたが慣れ親しんでいるものとの関係をモデル化するか、簡単な例を簡単に見つけることです。たとえば、ユーザーの質問応答モデルとしてユースケースを考えてみましょう。ユースケースと同じように、ユーザーには多くの質問と多くの回答があります。質問には多くの回答があり、ユーザーに属し、回答はユーザーと質問に属します。

これで簡単になりますよね? stackoverflowがこれをどのように実装しているかを見てみましょう。コメントボックスのHTMLコードをチェックすることができます。フォームアクションは(/ questions/10186415/answer/submit)のようなものです。ここで10186415は質問IDであり、サーバー側に渡されるため、回答が作成されると、この質問IDを使用して関連付けることができます。

あなたのケースに戻って、ゴールフォームはどのようなレビューであるかを知るべきです。レビューIDは、非表示のフィールドでも、送信URLの一部でもかまいません。

+0

私はコントローラ 'create'と目標フォーム '<%= f.hidden_​​field:review_id、:value => @review%>'に '@review = Review.where( "user_id = current_user" 。正常に保存されましたが、review_idはありませんでした。何か案が? – Azren

関連する問題