今天从3.2.7升级到Rails 3.2.9,似乎已从ActiveRecord中删除了"to_i"方法.
这是设计的吗?或者这是一个错误?我在改变说明中找不到任何提及.这会影响很多代码.
谢谢!
该#to_i方法从未存在过,但是将对象分配给值的方式在 Rails 3.2.8 中发生了变化。
鉴于以下情况:
class Lecture < ActiveRecord::Base
has_one :professor
end
Run Code Online (Sandbox Code Playgroud)
以前你可以指派一位教授来听这样的讲座:
@lecture.professor = Professor.find_by_id(1)
Run Code Online (Sandbox Code Playgroud)
或者像这样:
@lecture.professor_id = Professor.find_by_id(1)
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,一切都很简单,因为professor协会需要一个教授对象。在第二种情况下,虽然 ActiveRecord 执行了一些魔法来强制教授提供 id,但正如professor_id所期望的那样,而是一个整数。
在 Rails 3.2.8 及更高版本中,这种魔法不再起作用。从某种程度上来说,这很好,因为它暗示您可能做错了什么。professor_id例如,如果数据库中没有列,而只是professor需要整数,则这样的分配将不再起作用。
看起来这将恢复为 Rails 3.2.11 中以前的行为。
| 归档时间: |
|
| 查看次数: |
1978 次 |
| 最近记录: |