1

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

 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 和时间戳为零。任何想法为什么?

4

2 回答 2

7

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

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

于 2012-09-11T13:46:14.233 回答
3

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

以前有这个是没有意义的。

于 2012-09-11T13:46:35.977 回答