【问题标题】:Create a has_one association Error, mass-assign创建 has_one 关联错误,批量分配
【发布时间】:2013-03-15 01:49:43
【问题描述】:

我把这个放进去

order.rb

  has_one :adress

地址.rb

belongs_to :order

并以创建一个订单的形式输入:

<td><%= order.select :adress_id,Adress.all.map { |a| [a.name,a.id] }%></td>

但是当我尝试创建时出现这个

无法批量分配受保护的属性:地址

我不明白,因为出现这种情况,请有人解决,我尝试将 :adress 放入订单模型但出现此错误:

Adress(#2220351840) expected, got String(#2207089660)

是一个协会,所以请举例说明我是如何做到的

【问题讨论】:

  • 批量分配是一个严重的安全问题,无论如何都应该避免它,请参考Ruby on Rails Guides 来应对它
  • 通过查看您的代码,您似乎违反了 MVC 模式,您永远不应该直接从视图访问模型

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2


【解决方案1】:

attr_accessible :adress 添加到您的模型中。

【讨论】:

  • 在我的帖子中,我谈到了当我放这个时会发生什么。
【解决方案2】:

尝试:
attr_accessible :adress_attributes 在您的订单模型中。

如果您使用嵌套的 has_one 关联,请添加,

accepts_nested_attributes_for :adress, :update_only => true

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 2012-01-26
    相关资源
    最近更新 更多