Rails使用多个belongs_to创建操作

时间:2015-09-21 23:43:57

标签: ruby-on-rails ruby-on-rails-4 activerecord strong-parameters

试图找出一种更好的方式来分配评论它的相关模型。

我有以下课程:

class User < ActiveRecord::Base
  has_many :reviews, dependent: :destroy
end

class Review < ActiveRecord::Base
  belongs_to :user
  belongs_to :restaurant
end

class Restaurant < ActiveRecord::Base
    has_many :reviews, dependent: :destroy
end

非常简单的东西。评论必须有餐厅和用户。我的创建动作如下所示:

def create
    @restaurant = Restaurant.find(params[:restaurant_id])
    @review = @restaurant.reviews.build(review_params)
    @review.user = current_user

    if @review.save
        redirect_to @restaurant
    else
        render 'new'
    end
  end

  private
  def review_params
    params.require(:review).permit(:content)
  end

目前,我为餐厅制作了评论,然后将评论的用户分配给当前用户。

这一切都运行正常,但有更清洁的方式来建立关联? 有没有办法在强制参数旁边为构建方法添加其他参数?

我查看了accepts_nested_attributes_for,但我无法让它工作。

谢谢!

1 个答案:

答案 0 :(得分:0)

在表单中,您可以设置一个隐藏字段,其中包含您要分配的user_id

<%= f.hidden_field :user_id, value: @user.id %>

然后,将其添加到您的review_params

params.require(:review).permit(:content, :user_id)