如何将'create!'与strong_params一起使用?



好的,所以在安装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),我不知道如何才能实现这一点。

提前感谢

所以之前,您并没有真正使用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

相关内容

  • 没有找到相关文章

最新更新