我在MacOSX上使用的是RoR 3.1 +postgres.
在我的create函数中,我有以下内容:
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)。"trade“属性不再赋值。
我尝试用我称为after_create的方法访问模型中的相同属性,但也遇到了同样的问题。
但是,该记录在数据库中正确分配了所有字段后才可用。
为什么@power_plant_substrate对象在保存后不显示为“完全”赋值?
希望你能帮上忙。
发布于 2012-11-01 21:48:28
我的猜测是在PowerPlantSubstrate模型中有一个attr_accessible列表。检查是否在该列表中添加了货币和贸易。如果不是,则添加这些。
attr_accessible :currency, :trade, . . .单独使用一些属性作为attr_accessible将不可能批量赋值其他变量。这就是为什么个人作业有效。
如果没有列表,请尝试添加
attr_accessible nil 看看能不能成功
https://stackoverflow.com/questions/13175342
复制相似问题