Mongoid:节省家长为HABTM关系的选项时,禁止在逆对象验证(Mongoid: disabli

2019-10-16 17:11发布

我有以下几点:

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

需要注意的是用户也是一个设计对象。 这意味着,当你保存它需要一个用户名:密码:password_confirmation保存。

在Rails应用程序的环境中使用设计的,我有机会获得谁是当前登录用户的CURRENT_USER:

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

“CURRENT_USER”会保存好,因为它是通过身份验证,但following_user不会因为它不能缺少的验证:密码:password_confirmation。

反正是有,我可以禁用反对象验证?

我想追加“验证:假”逆两侧,但它并没有任何区别。 (难道我明白在这种情况下验证选项?)

什么是处理这种情况下建议的方法? 谢谢。

Answer 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

您可以覆盖在你的用户模型此方法,您需要的逻辑。



文章来源: Mongoid: disabling validation on inverse objects when saving parent for HABTM relationship Options