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 回答