:rails 3.1.4应用程序中未调用accepts_nested_attributes_for中的reject_if

时间:2012-06-14 16:36:48

标签: ruby-on-rails ruby-on-rails-3.1 nested-attributes

有很多关于:reject_if无效的问题。这是另一个案例。 :reject_if被彻底绕过了。

以下是用户模型中的代码:

class User < ActiveRecord::Base

  attr_accessible :name, :login, :email, :password, :user_type, :user_levels_attributes, :as => :role_new
  has_many :user_levels, :dependent => :destroy
  accepts_nested_attributes_for :user_levels, :reject_if => proc { |a| a['position'].blank? }, :allow_destroy => true

end

用户有许多用户级别,用于保存用户位置信息。这是user_level的模型:

class UserLevel < ActiveRecord::Base
  belongs_to :user

  validates :position, :presence => true
end

不应保存没有职位的用户,这就是:reject_if应该做的事情。但是我们尝试了proc, lambda, 'position' and :position。最后,我们甚至尝试:reject_if => true强制执行:reject_if。保存了空白位置的用户,上述任何一个都未在user_level中找到空白位置。似乎:reject_if被完全绕过了。

上面的代码有什么问题?谢谢。

0 个答案:

没有答案