Ruby / ActiveRecord在从字段中删除空格后没有检测到更改

时间:2012-10-12 20:09:44

标签: mysql ruby activerecord

我试图使用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

我已经搜遍了这个......有什么建议吗?

1 个答案:

答案 0 :(得分:7)

当您对模型属性进行就地修改时,不会进行任何分配,并且模型不会发现任何已进行的更改。正确的方法是重新分配:

foo.name = foo.name.lstrip

这会触发name=方法并启用脏跟踪。