2012-04-06 5 views
1

私のレールアプリケーションでmongodbを使用しています。MongoDBの動的フィールドに関する問題

私は

class Product 
include Mongoid::Document 
    field :test, type: String 
    field :link, type: String 
end 

以下のようにMongoのモデルがあると私は私のコントローラ

に以下のようにlibに、あるいは、例えば、それらを生成することによって、動的にこれらのフィールドを追加するとき、それは罰金

を動作しますが、

params[:product][:test]="Test Value" 
params[:product][:link]="Test Link" 

その後、私は Error ScreenShot

012(スクリーンショットを添付)Mongoidエラー以下のようにエラーが出ます

お願いします。前もって感謝します。

答えて

1

プライベートメソッドtestがあります。私のプロジェクトで:

> Account.new.test 
NoMethodError: private method `test' called for #<Account:0x007f89e60afd30> 

> Account.new.send :test 
ArgumentError: wrong number of arguments (0 for 2..3) 
+0

'link'はプライベートメソッドである、あまりにも – MikDiet

+0

でも、私は同じエラーを取得しますが、我々は明示的に初期化フィールドを持っている場合、それは動作します...'フィールドとして:test'と 'フィールド:link'どうして? 私は「desc」に出くわしたキーワードがもう1つあります。誰もその違いを説明することができます、なぜそれが明示的な宣言で動作し、動的フィールド生成中ではありませんか? – Rohit

+0

フィールドとして宣言した場合、Mongoidは – MikDiet

関連する問題