【问题标题】:Rails model before_save with MD5 digest带有 MD5 摘要的 Rails 模型 before_save
【发布时间】: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 解决方法并手动回调模型,但这自然会创建一个无限循环...

【问题讨论】:

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


    【解决方案1】:

    如果要调用 setter 方法,则需要显式引用 self。否则你将分配给一个局部变量

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

    【讨论】:

    • 感谢您的回答,它有效!我知道我错过了一些东西;)
    猜你喜欢
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 2015-03-15
    • 2013-08-18
    相关资源
    最近更新 更多