没有在 Rails 中更新的外键存在问题。
我有一个包含 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 %>