【发布时间】:2020-04-29 15:37:18
【问题描述】:
在我的 Rails 6 应用程序的注册表单中,可以创建一个带有嵌套 User 的 Account。
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 方法,但到目前为止我无法让它在嵌套项目上工作。
【问题讨论】:
-
请详细说明您要设置什么样的默认值以及默认值是否始终相同或它们是否取决于关联的帐户。是否可以在数据库级别配置默认值?
-
@spickermann,默认值视情况而定。
user也可以在另一个控制器中创建,然后owner属性应该是false。这就是我猜我无法在数据库级别设置默认值的原因。
标签: ruby-on-rails ruby activerecord strong-parameters