【问题标题】:Rails: saving a string on an object -- syntax problem?Rails:在对象上保存字符串——语法问题?
【发布时间】:2010-03-20 19:25:41
【问题描述】:

我正在尝试编写一个简单的函数来清理文件名字符串并更新对象。当我保存测试字符串时它可以工作,但是当我尝试保存我创建的字符串变量时,什么也没有发生。但是当我返回字符串时,输出似乎是正确的!我错过了什么?

 def clean_filename    
   clean_name = filename
   clean_name.gsub! /^.*(\\|\/)/, ''
   clean_name.gsub! /[^A-Za-z0-9\.\-]/, '_'
   clean_name.gsub!(/\_+/, ' ')
   #update_attribute(:filename, "test") #<-- correctly sets filename to test
   #update_attribute(:filename, clean_name) #<-- no effect????? WTF
   #return clean_name <-- seems to returns the correct string
 end

非常感谢。

【问题讨论】:

  • clean_filename 函数在哪里被调用?
  • 我从控制台调用它进行测试;它附加到文档对象。例如 Document.find(1).clean_filename
  • 这个系统上没有安装rails,所以无法测试,试试write_attribute。

标签: ruby-on-rails ruby saving-data update-attributes


【解决方案1】:

是否只有在对象 ID 已更改时才会进行更新?我认为只有在对象本身发生变化时才更新槽是合理的。

您有没有尝试过使用 gsub 代替 gsub!,从而导致对象 ID 发生变化?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多