2012-09-11 49 views
1

在我的項目中,用戶有一個酒店,並且每個酒店都有與之相關的房間類型。簡單地說,模型是Ruby on Rails構建使id無

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和時間戳是零。任何想法爲什麼?

回答

7

你已經建立了roomtype(它創建了一個新的對象實例),但是你還沒有保存它。你必須顯式保存房間類型才能進入數據庫(從而獲得一個ID)。

代替build使用createcreate!用一個方法調用完成這個

+0

同樣的答案,同一時間=> +1 – apneadiving

+0

請參閱http://stackoverflow.com/questions/403671/the-differences-between-build-create-and-create-and-when-should-they-be-我們可以更詳細地描述這些方法。 – gregates

+0

duh謝謝..... –

3

更換buildcreate,你就會有與ID和時間戳的持久化的對象。

之前沒有意義。