首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CREATE中,init with params会填充所有属性

在CREATE中,init with params会填充所有属性
EN

Stack Overflow用户
提问于 2012-11-01 18:41:17
回答 1查看 40关注 0票数 0

我在MacOSX上使用的是RoR 3.1 +postgres.

在我的create函数中,我有以下内容:

代码语言:javascript
复制
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值(跟踪到控制台),我可以验证所有字段都被正确传递:

代码语言:javascript
复制
{"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对象在保存后不显示为“完全”赋值?

希望你能帮上忙。

EN

回答 1

Stack Overflow用户

发布于 2012-11-01 21:48:28

我的猜测是在PowerPlantSubstrate模型中有一个attr_accessible列表。检查是否在该列表中添加了货币和贸易。如果不是,则添加这些。

代码语言:javascript
复制
attr_accessible :currency, :trade, . . .

单独使用一些属性作为attr_accessible将不可能批量赋值其他变量。这就是为什么个人作业有效。

如果没有列表,请尝试添加

代码语言:javascript
复制
attr_accessible nil 

看看能不能成功

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13175342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档