如何在Rails控制器中为嵌套项添加默认值



在我的Rails 6应用程序的注册表单中,可以创建带有嵌套UserAccount

class AccountsController < ApplicationController
def new
@account = Account.new
@account.users.build(
:owner => true,
:language => "FR"
)
end
def create
@account = Account.new(account_params)
if @account.save
redirect_to root_url, :notice => "Account created."
else
render :new
end
end
private
def account_params
safe_attributes = [
:name,
:users_attributes => [:first_name, :last_name, :email, :password, :owner, :language]
]
params.require(:account).permit(*safe_attributes)
end
end

在此处定义新user默认值的最佳方式是什么?

现在,我在注册表单中使用hidden_fields作为默认值,从而使它们公开可用。这当然不是我想要的,因为它非常不安全。

有更好的方法来处理这个问题吗?

我知道Rails的with_defaults方法,但到目前为止,我还无法让它处理嵌套项

尝试使用:

account_params[:users_attributes] = account_params[:users_attributes].with_defaults({ first_name: 'John', last_name: 'Smith'})

在创建动作的第一行

相关内容

  • 没有找到相关文章

最新更新