我无法将对象保存到相应的表格中。
模型客户。我想确保它有一个关联的有效帐户:
has_one :account, dependent: :destroy
validates_presence_of :account
validates_associated :account
模型账户属于客户,因此我想强制执行customer_id:
belongs_to :customer
validates :customer_id, presence: true
现在,我的问题是:我应该保存这些对象的顺序是什么?这些验证是否有些不相容?
因为,如果我首先尝试保存客户,那么它将无法实现,我会得到
myCustomer.save.errors.messages
{:account=>["can't be blank"]}
显然,因为我说过
validates_presence_of :account
在模型中。
但如果我先尝试保存帐户,请等待!我也无法保存!我有
验证:customer_id,presence:true
在我的帐户模型中,我还没有保存任何客户!
所以我也尝试初始化帐户:
acc = Account.new(acc_attr: foo, acc_attr2: bar)
然后尝试将其设置为Customer
Customer.account = acc
但是再一次,客户不会因为acc无效而无法保存,(因为它没有customer_id,我有一个validates_associated:客户模型中的帐户)
那么,我是否必须放弃任一模型中的一次验证?有解决方法吗?
谢谢!
答案 0 :(得分:0)
您可以将其添加到模型中:
attr_accessible: :customer_id
并添加到GemFile:
gem 'devise', '3.0.0.rc'
gem 'protected_attributes'
您应该检查您的控制器:
params.require(:account).permit(:customer_id)