如何覆盖 attr_protected?

2024-05-05

我的 STI 实施如下:

class Automobile < ActiveRecord::Base
end

class Car < Automobile
end

class Truck < Automobile
end

class User < ActiveRecord::Base
  has_many :automobiles
  accepts_nested_attributes_for :automobiles
end

我正在为用户创建汽车列表。对于每辆车,UI 设置type字段以及与汽车相关的属性。在提交表单时,type字段被忽略,因为它是受保护的属性。

我该如何解决这个问题?有没有一种声明式的方式unprotect受保护的属性?

Edit:这是我目前的问题解决方案: 我覆盖attributes_protected_by_default我的模型类中的私有方法。

class Automobile < ActiveRecord::Base
private
  def attributes_protected_by_default
    super - [self.class.inheritance_column]
  end
end

这删除了type受保护列表中的字段。

我希望有比这更好的方法。


我最终这样做了:

class Automobile < ActiveRecord::Base
private
  def attributes_protected_by_default
    super - [self.class.inheritance_column]
  end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何覆盖 attr_protected? 的相关文章

随机推荐

  • 如何随机获得Material Design Color?

    谷歌有他们的颜色 指南 http www google com design spec style color html 那么如何随机接收一个颜色呢 有没有办法指定表中的数字并从表的所有颜色中接收随机颜色 例如getMatColor 100
  • 使用 org.apache.cordova.file 获取选定的文件大小

    使用 org apache cordova file 插件 我可以选择该文件并获取该文件的本机路径 之后 我必须限制用户根据文件大小选择文件 但我无法理解文件大小 我的问题是我无法使用该插件获取文件大小 为此我正在使用本教程 http th
  • jQuery - 单击 LI,显示/隐藏 UL - 单击 LI:a href,继续显示 UL 并在空白窗口中打开

    感谢 SO 的出色贡献者 当您开始了解 jQuery 时 它会变得更酷 所以我有一个 LI 单击时会显示 隐藏子 UL 我想做的是能够单击 LI 内的链接 打开一个空白窗口 但也不会关闭子 UL 空白窗口打开完成 a href http a
  • Mocha 测试无法在 Nodejs 服务器上运行 [重复]

    这个问题在这里已经有答案了 客观的 找出当断言失败时我的测试崩溃的原因 背景 我有一个非常简单的 NodeJs 应用程序 我正在使用Mocha https www npmjs com package mocha for BDD https
  • Webpack 5 和 ESM

    我想我已经阅读了 SO 上的每个线程以及互联网上的每个相关页面 所有内容都有一些问题的变体 I want 使用 webpack 捆绑我的 Web 应用程序 在我的源 js 中使用 ES 模块并将它们转译为更广泛的浏览器支持 在我的 webp
  • super 在 python 中真正做什么[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我刚刚读过方法解析顺序 http python history blogspot com 2010 06 method resolution
  • PHP 中检查数字是否为浮点型

    这实在是太奇怪了 我有这段代码 rewardAmt amt if is float rewardAmt print r is float die else print r is not float die amt 的值为 0 01 但它正在
  • Struts2——异常启动过滤器struts

    我有一个和我刚才问的类似的问题 我正在尝试启动我的 Struts2 应用程序 但这次我刚刚下载了 javassist 3 0 jar 并将其添加到我的类路径 和 WEB INF lib 中 但仍然遇到同样的错误 有什么建议吗 以下是我的 w
  • 选项标签返回字符串值而不是 Angular 中 ngModel 的数字

    HTML
  • VBA:使用求解器时出现运行时错误 1004

    我是 VBA 新手 在宏中使用求解器时遇到一些问题 我将一个宏分配给 Excel 中的命令按钮 它们完美地计算了所有内容 但最后也出现了一个丑陋的错误 运行时错误 1004 对象 application 的方法计算失败 Sub serieu
  • 如何缩小从 Dart 编辑器编译的 JavaScript 代码?

    我正在使用 Dart Editor 构建 Dart 应用程序 我正在编译为 JavaScript 以在所有浏览器上运行 我想缩小输出 JavaScript 如何在不进入命令行的情况下执行此操作 我知道在命令行上 我可以使用dart2js m
  • 列表中的连续元素

    我正在阻止一个谓词来编码Prolog 我需要对两个谓词进行编码 如果我打电话 u a b c d e f X 它会给X a b X b c X c d 如果我打电话 v a b c d e f X 它会给X a b X c d X e f
  • 在运行时选择模板参数时如何避免代码呈指数级增长

    考虑一堆基本类型 Foo 所有这些都具有通用方法的独特实现 Bar 我可以结合Foo1 Foo2 Foo5像这样 CombinedFoo
  • 通过提供邮政编码获取城市名称的网络服务[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要一个可靠的网络服务 它通过传递邮政编码给出相应的城市名称 该网络服务应该随时可用 该网络服务也将在生产中使用 我发现了几种使用基于
  • 更改 EF Power Tools Beta 3 中生成的文件名

    我已经搜索过但无法找到这个问题的答案 目前我们的数据库用户表的前缀 例如tblUsers 我已更新 EF 模板以从生成的类名称中删除 tbl 但是我仍然不知道如何更改输出文件名以匹配 有可能吗 还是我在向月亮祈求 我正在 VS 2012 中
  • 为什么 T-SQL 块即使不应该执行也会给出错误?

    我正在编写一个 看似 直接的 SQL 片段 它在确保列存在后删除该列 问题 如果该列不存在 则代码insideIF 子句抱怨它找不到该列 出色地 doh 这就是为什么它位于 IF 子句内 所以我的问题是 为什么一段不应该执行的代码会出错 这
  • 如何不自动取消引用 Google App Engine 中的 db.ReferenceProperty?

    假设我有 class Foo db Model bar db ReferenceProperty Bar foo Foo all get 有没有办法让我在不向数据存储区进行查询的情况下执行 foo bar 操作 文档说foo bar将是一个
  • 如何将 Font Awesome 4.3.0 与 JSF 集成?

    我已经尝试过这个方法 如何将 webjars org 中的 Font Awesome 与 JSF 结合使用 https stackoverflow com questions 18891768 how to use font awesome
  • Spark:如何从spark shell运行spark文件

    我正在使用CDH 5 2 我能够使用火花外壳运行命令 如何运行包含 Spark 命令的文件 file spark 有没有办法在没有 sbt 的情况下在 CDH 5 2 中运行 编译 scala 程序 在命令行中 您可以使用 spark sh
  • 如何覆盖 attr_protected?

    我的 STI 实施如下 class Automobile lt ActiveRecord Base end class Car lt Automobile end class Truck lt Automobile end class Us