gpt4 book ai didi

ruby-on-rails - 在 Rails 模型中添加公共(public)变量?

转载 作者:搜寻专家 更新时间:2023-10-30 20:30:24 25 4
gpt4 key购买 nike

我正在尝试将手动创建的变量传递给我的 Rails 模型。

例如我有这样一个表格:

<%= form_for(@ncpar) do |f| %>
<%= f.check_box(:corrective_change) %> Change Corrective Action?
<%= f.text_area :corrective_desc %>
<%= f.submit %>
<% end %>

在我的数据库中,没有corrective_change 列。它用于我的模型中的手动功能,这意味着它不会保存在数据库中。

在我的模型中,我放了这个:

attr_accessor :corrective_change 
#Cause: Can't mass-assign protected attributes: corrective_change

我也试试:

attr_accessible :corrective_change
#Cause: unknown attribute: corrective_change

那么应该如何将这个变量传递给我的模型并访问它呢?

PS:我可以将使用 corrective_change 的代码移到我的 Controller 中,但这会破坏我将它放入模型的目的,这样我就可以让它在保存时自动执行。

最佳答案

简短的回答是您可能需要两者:

attr_accessor :corrective_change 
attr_accessible :corrective_change

这两行做不同的事情,第一行 attr_accessor 使用 getter 和 setter 在您的模型上创建一个公共(public)属性。

第二行 attr_accessible 允许您通过 mass assignment 设置此变量.基本上如果你在你的 Controller 中做这样的事情,你没有这一行:

@ncpar = NCpar.new(params[:ncpar])

如果 params[:ncpar] 中有一个 :corrective_change 出于安全原因它将被忽略,除非您明确声明您希望允许该变量通过批量分配设置:

attr_accessible :corrective_change 

关于ruby-on-rails - 在 Rails 模型中添加公共(public)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10425738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com