【发布时间】:2012-08-29 15:48:36
【问题描述】:
我在 Rails 3.2.8 和 Ruby 1.9.3 上。
我无法弄清楚为什么嵌套属性的验证没有运行或返回任何错误。当我提交未填写任何内容的表单时,我会收到父模型(用户)的错误,而不是子模型(帐户)的错误。
在下面的代码中,我有一个拥有一个拥有的帐户的用户模型(帐户模型)和一个属于所有者的帐户模型(用户模型)。 Account 模型有一个子域字符串的文本字段。
似乎当我提交不包含子域字段的表单时,帐户模型上的验证根本没有运行。关于如何在这里进行验证的任何想法?在此先感谢您的帮助或指点。
user.rb
class User < ActiveRecord::Base
attr_accessible :owned_account_attributes
has_one :owned_account, :class_name => 'Account', :foreign_key => 'owner_id'
validates_associated :owned_account
accepts_nested_attributes_for :owned_account, :reject_if => proc { |attributes| attributes['subdomain'].blank? }
end
account.rb
class Account < ActiveRecord::Base
attr_accessible :owner_id, :subdomain
belongs_to :owner, :class_name => 'User'
validates :subdomain,
:presence => true,
:uniqueness => true,
:format => { ...some code... }
end
new.haml
= form_for @user do |f|
... User related fields ...
= f.fields_for :owned_account_attributes do |acct|
= acct.label :subdomain
= acct.text_field :subdomain
= submit_tag ...
users_controller.rb
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(params[:user])
if @user.save
...
end
end
【问题讨论】:
标签: ruby-on-rails ruby forms validation nested-attributes