ruby-on-rails - 我的输出对于从控制台创建新对象是否正确?

标签 ruby-on-rails

我正在阅读 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/

相关文章:

ruby-on-rails - 我可以在做种时将我的所有产品更新给特定用户吗?

ruby-on-rails - 如何使用 s3-select 获取 s3 json 文件中子对象的计数?

ruby-on-rails - 如何在Rails 3.1应用程序中的瘦集群中重新启动各个服务器

ruby-on-rails - 如何在带有Elasticsearch-rails的映射中设置路由

ruby-on-rails - ImageMagick 中的哈希 (#) 调整大小选项是什么?

ruby-on-rails - 我怎么知道一个 gem 与一个版本的 rails 兼容?

javascript - CoffeeScript 类 - 调用从另一个类方法调用一个类方法

ruby-on-rails - 如何使用 RSpec 测试 Rails 3.2 ActionMailer 是否呈现正确的 View 模板?

ruby-on-rails - 在路径助手中使用非默认属性,而不是 :id

ruby-on-rails - 动态嵌套命名空间路由 rails