activerecordで保存したデータのidの取得の方法を教えてください


`activerecord`で保存したばかりのデータの`id`を取得したいのですがうまくググれない(他の情報ばかりヒットする)ので教えて下さい。

イメージ

[code]

    data = User.create(:name => hoge)
    p data.id # 今作ったデータのID
    
[/code]

また、今回の情報がヒットする検索ワードなどを教えて下さい。

追記

`data.attributes['id']`にて取得することはできました。  
このやり方で問題はないでしょうか。




手元のrails consoleで試す限り、 `data.id` のような形でもでidを取得できました。

[code]

    irb(main):001:0> c = Company.create :name => 'hoge'
    => #<Company id: 4, name: "hoge", created_at: "2015-02-02 03:53:58", updated_at: "2015-02-02 03:53:58">
    irb(main):002:0> c.id
    => 4
    
[/code]

おそらくですが、どこかでバリデーションエラーが発生しているのではないでしょうか？

[code]

    # nameが必須の場合
    irb(main):004:0> c = Company.create :name => ''
    => #<Company id: nil, name: "", created_at: nil, updated_at: nil>
    irb(main):005:0> c.id
    => nil
    irb(main):006:0> c.valid?
    => false
    irb(main):007:0> c.errors
    => #<ActiveModel::Errors:0x007ffc5b8646d8 @base=#<Company id: nil, name: "", created_at: nil, updated_at: nil, @messages={:name=>["を入力してください。"]}>
    
[/code]

idが取得できない場合、`data.valid?` の戻り値を確認してください。  
`false` であればバリデーションエラーが発生しているので保存できていません。  
`data.errors` でエラーの内容を確認してください。

> data.attributes['id']にて取得することはできました。  
>  このやり方で問題はないでしょうか。

僕の場合、`data.attributes['id']`のような取得の仕方はしないです。`data.id`で取得する場合がほとんどです。  
`data.attributes['id']`でしか取得できない、ということはおそらくないと思うので、根本原因を究明した方がよいと思います。

