0

RailsでForeginキーが更新されないという問題があります。

3つのモデルのアプリケーションがあります。

ユーザー、レビュー、コメント。

ユーザーには多くのレビューがあり、レビューには多くのコメントがあります。新しいコメントを追加するときに、User_idとReview_idをコメントテーブルに追加します。

コメントはフォームから渡されます。次のステートメントでuser_idを更新します

    @comment = current_user.comments.build(params[:comment]) in the comment controller

foreginキーであるreviews_idを除いて、すべてがコメントテーブルに組み込まれます。これは、モデル内の関連付けによって自動的に行われることを理解していました。これは当てはまらないのでしょうか、それともモデルに何かが欠けているのでしょうか。

ユーザーモデル

    class User < ActiveRecord::Base
    attr_accessible :email, :name, :password, :password_confirmation
    has_secure_password

    has_many :microposts, dependent: :destroy
    has_many :reviews, dependent: :destroy
    has_many :comments, dependent: :destroy 

    end

レビューモデル

    class Review < ActiveRecord::Base
    attr_accessible :review_text, :tumb_up_down, :rating, :name
belongs_to :user
    has_many :comments, dependent: :destroy 

コメントモデル

    class Comment < ActiveRecord::Base
attr_accessible :comments, :review_id, :user_id
belongs_to :reviews 

コメントコントローラーコード

    def create
    @comment = current_user.comments.build(params[:comment])

   if @comment.save
         redirect_to 'static_pages/home' #{:action => 'show', :id } 
    else
   redirect_to 'static_pages/home'
end

終わり

そして最後に、値を渡すフォーム。これにreview_idを含める必要があります。

    <div class="field">
    <%= form_for(@comment) do |f| %>
    <%= render 'shared/error_messages', object: f.object %>

<%= f.label :comments %>
    <%= f.text_area :comments, placeholder: "Add your words of wisdom" %>

    </div>
    <%= f.submit "Add", class: "btn btn-large btn-primary" %>
    <% end %>
4

0 に答える 0