我正在尝试修改属性 Mongoid 模型上的设置器,但与 ActiveRecord 不同,我无法调用 super 来让 Mongoid 实际设置属性,因为模型正在使用include Mongoid::Document
而不是一个子类ActiveRecord::Base
.
我希望能够做这样的事情。
class User
include Mongoid::Document
embeds_one :email_account
def email_account=(_email_account)
ret = super
puts "email account updated!"
do_something
ret
end
end
除了,因为它不是子类,所以产生
NoMethodError: super: no superclass method
Ideas?
EDIT:
你会如何做一个吸气剂,比如
class User
include Mongoid::Document
embeds_one :email_address
def email_address
super || "[email protected] /cdn-cgi/l/email-protection"
end
end
在我看来,你所做的根本不属于用户模型。我将在 EmailAccount 模型中创建另一个方法,并将其与 after_save 回调挂钩。
class EmailAccount
include Mongoid::Document
embedded_in :user
after_save :do_something
def do_something
puts "email account updated!"
do_actual_something
end
end
另一种方法是使用观察者http://mongoid.org/docs/callbacks/observers.html http://mongoid.org/docs/callbacks/observers.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)