Ruby on rails RubyonRails构建使得id为零

Ruby on rails RubyonRails构建使得id为零,ruby-on-rails,build,Ruby On Rails,Build,在我的项目中,用户有一个酒店,每个酒店都有与其关联的房间类型。简单地说,这些模型是 class User < ActiveRecord::Base has_many :hotels class Hotel < ActiveRecord::Base belongs_to :user has_many :roomtypes class Roomtype < ActiveRecord::Base attr_accessible :m

在我的项目中,用户有一个酒店,每个酒店都有与其关联的房间类型。简单地说,这些模型是

 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
控制台返回:

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

出于某种原因,Roomtype id和时间戳为零。你知道为什么吗?

你已经构建了roomtype,它创建了一个对象的新实例,但是你还没有保存它。您必须显式保存roomtype,以便它进入数据库,从而获得id


使用create或create代替build!要通过单个方法调用实现这一点,您已经构建了roomtype,它创建了对象的一个新实例,但尚未保存它。您必须显式保存roomtype,以便它进入数据库,从而获得id

使用create或create代替build!要通过一个方法调用实现这一点,请将build替换为create,这样您的持久化对象将具有id和时间戳

以前这样做是没有意义的。

将build替换为create,您将拥有id和时间戳的持久化对象

以前使用这些方法没有意义。

有关这些方法的详细说明,请参阅。有关这些方法的详细说明,请参阅。
    #<Roomtype id: nil, name: "something", maxguests: 2, created_at: nil, updated_at: nil, hotel_id: 1>