我正在阅读 O'Reilly 编写的 Ruby on Rails Up and Running,并且遇到了一个问题,我不确定该去哪里寻求帮助。
我在书中的部分是从控制台创建新对象,然后将它们保存到数据库中。我已经创建了数据库 (MySQL),运行迁移并最终验证了 Rails 创建了数据库模式(到目前为止,我也已经阅读了本书的其余部分)。
为了创建对象,我运行了以下命令:
ruby script/console
photo = Photo.new
这本书显示的输出是:
#<Photo:0x35301d8 @attributes={"filename"=>""}, @new_record=true>
但是,我得到的输出是:
#<Photo id: nil, filename: nil>
据我了解,当以这种方式创建新对象时,会生成一个唯一 ID 来标识该对象,但在我的情况下,似乎没有生成唯一 ID。我对此进行了大量的谷歌搜索,这是一件很难搜索的事情,因为它本身不是一个错误消息;它是一个错误消息。但我很确定出了什么问题。所以我想我应该到 stackoverflow 社区寻求帮助。
谢谢, 亚当
最佳答案
(数据库)ID 仅在保存到数据库后生成。 new
方法只是实例化对象,并不保存它。
请小心,不要将 Ruby 对象的 object_id
(0x35301d8
) 误认为是数据库 ID(通常是连续整数)。数据库 ID 是您在编写 Rails 应用程序时真正关心的唯一一个。
至于输出的差异,我大胆猜测这是 Rails (ActiveRecord) 版本的差异。
关于ruby-on-rails - 我的输出对于从控制台创建新对象是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3951231/