7

我正在尝试使用 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

我已经到处搜索了...有什么建议吗?

4

1 回答 1

7

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

foo.name = foo.name.lstrip

这会触发该name=方法并进行脏跟踪。

于 2012-10-12T20:12:03.437 回答