0

有很多关于: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的模型:</p>

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完全被绕过了。

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

4

0 回答 0