Rails使用MD5摘要模拟before_save

时间:2012-11-09 10:34:42

标签: ruby-on-rails-3 model before-save

我有一个模型,在用户输入后必须自动填写一些记录。

然后我使用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 个答案:

答案 0 :(得分:3)

如果要调用setter方法,则需要显式引用self。否则,您将分配给本地变量

md5 = "foo" # local variable
self.md5 = "foo" # method call, value will be stored in the instance.