我试图使用mysql2适配器和ActiveRecord从MySQL数据库中的各个字段中删除空格和回车:
Ruby 1.9.3p194
ActiveRecord 3.2.8
MySQL 5.5.28
foo = People.find(1)
foo.name => "\rJohn Jones"
foo.name.lstrip! => "John Jones"
foo.name => "John Jones"
foo.changes => {} #no changes detected to foo.name???
foo.save => true # but does nothing to database.
如果我这样做:
foo.name = "John Jones"
foo.save => true
People.find(1).name => "John Jones" # this works and saves to database
我已经搜遍了这个......有什么建议吗?
答案 0 :(得分:7)
当您对模型属性进行就地修改时,不会进行任何分配,并且模型不会发现任何已进行的更改。正确的方法是重新分配:
foo.name = foo.name.lstrip
这会触发name=
方法并启用脏跟踪。