2012-03-12 8 views
0

簡単な質問。私は、コンソールで新しいオブジェクトを作成しようとすると、私は、Ruby on Railsモデルの新しいオブジェクトを作成できません

class Article < ActiveRecord::Base 
    attr_accessor :title, :content 

    validates :title, :presence => true 
    validates :content, :presence => true 
end 

しかし、非常に基本的なクラスの新しいオブジェクトを作成しようとしています、タイトルと内容のフィールドはつねにnil

1.9.2-head :021 > a = Article.new(title: "abcdefg", content: "hijklmnop") 
=> #<Article id: nil, title: nil, content: nil, created_at: nil, updated_at: nil> 
として表示します

なぜ新しいオブジェクトを作成できないのですか?

+0

'Article.create!(タイトル:" abcdefg "、内容:" hijklmnop ")'を試してください。 '!'はそのオブジェクトの作成に失敗した理由を表示します – prasvin

答えて

2

attr_accessibleをお試しになりましたか?

+3

@ Jazear 'attr_accessible'の代わりに' attr_accessor'を使うと、デフォルトのレールsetter/getterをオーバーライドするので、コンストラクタで設定している値は無視される。 –

+0

正解、ありがとう。これらのオブジェクトの内容を変更したい場合は、特定のセッターメソッドを作成する必要があります。 –

+0

それ以外の場合は、attr_accessorの呼び出しを削除し、生成されたセッターとゲッターを使用してください。 –

関連する問題