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> 

何らかの理由で、ルームタイプIDとタイムスタンプはnilです。なぜ何かアイデアはありますか?

4

2 に答える 2

7

roomtype (オブジェクトの新しいインスタンスを作成する) を作成しましたが、まだ保存していません。roomtype を明示的に保存してデータベースに格納する (したがって ID を取得する) 必要があります。

単一のメソッド呼び出しでこれをbuild使用createまたは達成する代わりにcreate!

于 2012-09-11T13:46:14.233 に答える
3

に置き換えるbuildcreate、永続化されたオブジェクトに ID とタイムスタンプが付きます。

これを以前に持っていても意味がありません。

于 2012-09-11T13:46:35.977 に答える