【问题标题】:Ruby on Rails build makes id nilRuby on Rails 构建使 id 为零
【发布时间】:2012-09-11 13:44:07
【问题描述】:

在我的项目中,用户拥有一家酒店,每家酒店都有与之关联的房间类型。简而言之,模型是

 class User < ActiveRecord::Base
     has_many :hotels

 class Hotel < ActiveRecord::Base
      belongs_to :user
      has_many :roomtypes

 class Roomtype < ActiveRecord::Base
    attr_accessible :maxguests, :name
    belongs_to :hotel

如果我执行命令:

 @user = User.find(1)
 @user.hotels.find(1).roomtypes.build(name: "something", maxguests: "2")

控制台返回:

    #<Roomtype id: nil, name: "something", maxguests: 2, created_at: nil, updated_at: nil, hotel_id: 1> 

由于某种原因,Roomtype id 和时间戳为零。任何想法为什么?

【问题讨论】:

    标签: ruby-on-rails build


    【解决方案1】:

    你已经建立了房间类型(它创建了一个新的对象实例),但你还没有保存它。您必须明确保存房间类型才能进入数据库(并因此获得一个 id)。

    使用createcreate! 而不是build,通过单个方法调用来完成此操作

    【讨论】:

    【解决方案2】:

    build 替换为create,您将获得带有id 和时间戳的持久对象。

    以前有这个没有意义。

    【讨论】:

      猜你喜欢
      • 2014-09-01
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      • 2012-03-01
      • 2015-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多