带有 MD5 摘要的 Rails 模型 before_save
Posted
技术标签:
【中文标题】带有 MD5 摘要的 Rails 模型 before_save【英文标题】:Rails model before_save with MD5 digest 【发布时间】:2012-11-09 10:34:41 【问题描述】:我有一个模型,一些记录必须在用户输入后自动填写。
然后我使用before_save
回调,但是记录不会被存储。
这是我的模型:
before_save :create_relation_plus_md5
has_many :bridges
attr_accessible :id, :admin_user_id, :md5, :url, :name, :cBox
validates_presence_of :name
validates_uniqueness_of :name
def create_relation_plus_md5
baseUrl = "http://www.mysite.com/?id="
digest = Digest::MD5.hexdigest("#name#id#someOtherData")
puts "digest : #digest"
md5 = digest
url = "#baseUrl#digest"
# + create relations
end
md5 和 url 不会被存储,我想我错过了一些东西。也许我必须在方法中显式调用save
?
我可以使用after_save
解决方法并手动回调模型,但这自然会创建一个无限循环...
【问题讨论】:
【参考方案1】:如果要调用 setter 方法,则需要显式引用 self。否则你将分配给一个局部变量
md5 = "foo" # local variable
self.md5 = "foo" # method call, value will be stored in the instance.
【讨论】:
感谢您的回答,它有效!我知道我错过了一些东西;)以上是关于带有 MD5 摘要的 Rails 模型 before_save的主要内容,如果未能解决你的问题,请参考以下文章
Rails - 在before_destroy回调时取消销毁
has_one , belongs_to 和 create_before 在 rails