1

我有以下内容:

def User 
  has_and_belongs_to_many: :following, class: "User", inverse: :followers 
  has_and_belongs_to_many: :followers, class: "User", inverse: :following 
end

请注意,用户也是一个设计对象。这意味着当您保存用户时,它需要 :password 和 :password_confirmation 才能保存。

在使用 Devise 的 rails 应用程序的上下文中,我可以访问当前登录用户的 current_user:

following_user = User.find(following_id) 
current_user.following.push(following_user) 

“current_user” 保存正常,因为它已通过身份验证,但 following_user 未保存,因为它未通过缺少:password 和 :password_confirmation 的验证。

无论如何,我可以禁用对逆对象的验证吗?

我尝试将“验证:假”附加到逆的两侧,但没有任何区别。(在这种情况下,我是否理解 validate 选项?)

处理这种情况的推荐方法是什么?谢谢。

4

1 回答 1

1

在设计密码验证为

validates_presence_of     :password, :if => :password_required?
validates_confirmation_of :password, :if => :password_required?

方法 password_required 是

def password_required?
   !persisted? || !password.nil? || !password_confirmation.nil?
end

您可以使用所需的逻辑在用户模型中覆盖此方法。

于 2012-05-18T03:02:32.773 回答