0

これらの属性を持つモデルWordpressBloggerがあります:(これらの列の特定の順序に注意してください:テーブルが生成された後に screen_name が追加されました)

id, rss_feed_id, blog_url, year_founded, created_at, updated_at, screen_name, latest_entry

コンソールで実行blogger = WordpressBlogger.new(:screen_name => "test")すると、screen_name が設定されたモデルが返されないようです。

代わりにこれを取得します:

=> #<WordpressBlogger id: nil, rss_feed_id: nil, blog_url: nil, year_founded: nil, created_at: nil, updated_at: nil, screen_name: nil, latest_entry: nil> 

それでも、blogger = WordpressBlogger.new(:year_founded => 2011)コンソールで実行すると、この属性が設定されたモデルが返されます。

=> #<WordpressBlogger id: nil, rss_feed_id: nil, blog_url: nil, year_founded: 2011, created_at: nil, updated_at: nil, screen_name: nil, latest_entry: nil> 

created_atこれは、データベース内の列がやなどの Rails で作成された属性の後である場合に属性が設定されない、Rails の奇妙なバグupdated_atですか?

更新: attr_accessible に追加するのを忘れていました。

4

3 に答える 3

1

ほとんどの場合、クラスにattr_accessibleへの参照があります。WordpressBlogger一括割り当てが許可されているattr_accessible要素のリストにyear_foundedを追加する必要があります。

于 2013-03-07T01:29:00.957 に答える
0

実際にはモデルを作成していません。idセットがないことに注意してください。それを作成するには、次のいずれかを行う必要があります

blogger = WordpressBlogger.new(:screen_name => "test")
blogger.save

また

blogger = WordpressBlogger.create(:screen_name => "test")

これはあなたのモデルにありますか?

attr_accessor :screen_name, :year_founded

または、もう一度exit実行する必要があるかもしれませんrails c

于 2013-03-07T01:29:13.827 に答える
0

ほとんどの場合、移行を実行したときにコンソールが実行されています。コンソールをすばやくreload!再起動すると、すべての列が表示されます。

于 2013-03-07T01:34:37.903 に答える