0

MacOSXでRoR 3.1 + Postgresを使用しています

私の作成機能では、これがあります:

def create
    @power_plant_substrate = PowerPlantSubstrate.new(params[:power_plant_substrate]) <= 1

    @trade = params[:power_plant_substrate][:trade] 

    respond_to do |format|
      if @power_plant_substrate.save

    ...
end

(1) params[:power_plant_substrate] で新しいオブジェクトをインスタンス化する必要があります

問題:

新しいオブジェクト @power_plant_substrate を作成した直後に、いくつかの属性が利用可能です。

params[:power_plant_substrate] の値を確認すると (コンソールへのトレース)、すべてのフィールドが正しく渡されたことを確認できます。

{"power_plant_id"=>"161", "substrate_id"=>"213", "quantity"=>"1", "periodicity"=>"yearly", "trade"=>"wanted", "price_per_unit"=>"0.00", "total_price"=>"0.00", "currency"=>"USD", "address"=>", Reserved", "transport"=>"pickup_only", "description"=>"afewrqe", "latitude"=>"", "longitude"=>""}

ただし、保存した直後にオブジェクトを確認しました(@power_plant_substrate.save)。「貿易」属性はもう割り当てられていません。

after_create を呼び出すメソッドでモデル内の同じ属性にアクセスしようとしましたが、同じ問題が発生しました。

ただし、レコードは、データベースで正しく割り当てられたすべてのフィールドで使用できます。

保存後に @power_plant_substrate オブジェクトが「完全に」割り当てられたように見えないのはなぜですか?

お役に立てれば幸いです。

4

1 に答える 1

2

私の推測では、PowerPlantSubstrate モデルに attr_accessible のリストがあると思います。そのリストに通貨と貿易が追加されているかどうかを確認します。そうでない場合は、それらを追加します。

attr_accessible :currency, :trade, . . .

いくつかの属性を attr_accessible として単独で作成すると、他の変数をまとめて割り当てることができなくなります。そのため、個別の割り当てが機能しました

リストがない場合は、追加してみてください

attr_accessible nil 

それが機能するかどうかを確認します

于 2012-11-01T13:48:27.723 に答える