有很多关于: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
被完全绕过了。
上面的代码有什么问题?谢谢。