2012-01-02 4 views
1

いくつかのデフォルト値で新しいレコードを開始したいと思います。Rails:新しいレコードの変数からデフォルト値を定義する

<the-page-id>, slug: mrs-test, title: Mrs. Test 

しかし@frameのデフォルト値の数はゼロです:

@test = "#{@fb_page['id']}, slug: #{slug}, title: #{@fb_page['name']}" 
@frame = Frame.new(:fb_page_id => @fb_page['id'].to_i, :slug => slug, :title => @fb_page['name'], :theme => 'default') 

@Testは私が望むすべてを示しています!

# @frame.inspect: 
#<Frame id: nil, slug: nil, title: "Mrs. Test", theme: "default", fb_page_id: nil, created_at: nil, updated_at: nil> 

誰もがなぜ変数を取らないのか教えてください。文字列「default」は@fb_page['name']と同様に通過します。

ありがとうございます!

答えて

5

これは、通常、モデルのattr_accessibleセクションにこれらの属性をリストしないと発生します。

attr_accessible :fb_page_id, :slug, :title, :theme 

レールは、質量割り当て特定のモデル属性から悪意のあるユーザーを防止するために、mass-assignment protectionを有しています。したがって、属性をModel.new()メソッドに渡すと、属性を保持するのはattr_accessibleにリストされている属性だけになります(まだモデルを保護していない場合を除く)。

あなたが(彼らは現在のように)、あなたは、ドット表記法を使用してこれらの属性を設定する必要が保護されたこれらの属性を残しておきたい場合は:素晴らしい

@frame = Frame.new 
@frame.fb_page_id = @fb_page['id'].to_i 
@frame.slug = slug 
@frame.title = @fb_page['name'] 
@frame.theme = 'default' 
+0

を!あなたはあまりにも良いです!それがまさにポイントでした!私のスラッグは本来 'unique_name'という名前でattr_accessibleのリストにありました。どうもありがとう!私はドット表記で作っていただろうことも知っています。私はあなたのためにすべての属性を割り当てることができますが、「外側」から割り当てることはできません。ありがとう!!! –

関連する問題