你如何使用'创造'!用strong_params?

时间:2013-08-08 15:38:17

标签: ruby-on-rails strong-parameters

好的,所以在安装strong_params之前,使用MyBook.create!会有效,但现在却没有。

这是我的代码

class AuthorsController < ApplicationController
  def new
    @author = user.authors.build
  end

  def create
    @author = Author.new(author_params)
    if @author.save
      @book = MyBook.create!(:author_id => @author.id,
          :user_id => @author.user_id)
        )
   else
     render :new
  end
end

我试过

@book = MyBook.create!(params.require(:my_book).permit(
          :author_id => @author.id,
              :user_id => @author.user_id)
        )

但我得到了Required parameter missing: my_book

我做错了什么?我可以逐个更新每个属性,但这似乎并不高效。我知道我无法批量分配受保护的属性,但无需在我的模型中分配属性(因为strong_params),我不明白我是如何让它工作的。

提前谢谢

1 个答案:

答案 0 :(得分:1)

所以之前,你并没有真正使用params

@book = MyBook.create!(:author_id => @author.id,
      :user_id => @author.user_id)
    )

如果您使用“质量分配”方式的params,它将看起来像:

@book = MyBook.create!(params[:book])

由于你自己拔出了id,所以更容易做到:

@book = MyBook.create! do |mybook|
  mybook.author_id = @author.id
  mybook.user_id =  @author.user_id
end