如何使用 ActiveAdmin 创建 STI 子类的对象

2024-05-10

给出以下设置(当前不起作用)

class Employee < ActiveRecord::Base
end

class Manager < Employee
end

ActiveAdmin.register Employee do
  form do |f|
    f.input :name
    f.input :joining_date
    f.input :salary
    f.input :type, as: select, collection: Employee.descendants.map(&:name)
  end
end

我希望为所有员工提供一个“新”表格,并能够在表格中选择员工的 STI 类型。 我能够按预期看到“类型”的选择框,但是当我点击“创建”按钮时,出现以下错误:

ActiveModel::MassAssignmentSecurity::Error in Admin::EmployeesController#create

Can't mass-assign protected attributes: type

现在,我知道了受保护属性在 Rails 中的工作方式,并且我有一些解决方法,例如定义Employee.attributes_protected_by_default但这会降低安全性并且过于黑客行为。

我希望能够使用 ActiveAdmin 中的某些功能来执行此操作,但我找不到。我不想创建自定义控制器操作,因为我展示的示例是高度简化和人为的。

我希望 ActiveAdmin 生成的控制器能够以某种方式识别type and do Manager.create代替Employee.create

有人知道解决方法吗?


您可以自己定制控制器。读有关自定义控制器的 ActiveAdmin 文档 http://activeadmin.info/docs/8-custom-actions.html#modify_the_controller。这是一个简单的例子:

controller do
  alias_method :create_user, :create
  def create
    # do what you need to here
    # then call create_user alias
    # which calls the original create
    create_user
    # or do the create yourself and don't
    # call create_user
  end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 ActiveAdmin 创建 STI 子类的对象 的相关文章

  • (Rails) Assert_Select 的烦人警告

    有谁知道如何让assert select在rake测试期间不输出所有那些讨厌的html警告 你知道 就像这样的东西 ignoring attempt to close body with div opened at byte 1036 li
  • rvm gem 安装错误?

    我正在摆弄 ruby gems 和 rvm 它工作得很好 但现在当我尝试安装 gem 时出现错误 gem install Rails错误 同时 执行 gem Errno EACCES 权限被拒绝 Users da rvm gems ruby
  • 用户未定义的方法 attr_accessible 错误

    我正在尝试创建某种登录 我创建了一个用户脚手架并将此代码放在我的 user rb 中 class User lt ActiveRecord Base attr accessible name password digest password
  • 来自控制器的 Rails 验证

    有一个联系页面 可以输入姓名 电话 电子邮件和消息 然后发送到管理员的电子邮件 没有理由将消息存储在数据库中 问题 如何 在控制器中使用 Rails 验证 根本不使用模型 或者 在模型中使用验证 但没有任何数据库关系 UPD Model c
  • 如何为 ApplicationController 中 after_action 过滤器中的所有操作渲染 json?

    是否可以在 Rails ApplicationController 中创建一个 after filter 方法 该方法在每个操作上运行并呈现为 JSON 我正在构建一个 API 并且希望将控制器中的每个操作的输出呈现为 JSON 客户控制器
  • 资产管道:仅对一个控制器使用 javascript 文件

    在 Ruby on Rails v4 中 我希望仅为特定控制器加载一个 js 文件 或一组 js 文件 执行此操作的标准方法是什么 在 application js 中有 require tree 线 我假设这需要删除 所以我并不总是加载每
  • 服务器上的 Rails 会话

    我想让一些 Rails 应用程序在不同的服务器上共享同一个会话 我可以在同一服务器内完成此操作 但不知道是否可以在不同服务器上共享 有人已经做过或者知道怎么做吗 Thanks Use the 数据库会话存储 https github com
  • 使用rSpec 测试delayed_job 链的最佳方法是什么?

    目前 当我的代码中有一个延迟方法时 如下所示 CommentMailer delay deliver comments comment true 我在规范中写了这样的内容 dj mock DelayProxy CommentMailer s
  • Rails 资源单数还是复数?

    我有一条搜索路线 我想将其设为单数 但是当我指定单数路线时 它仍然会生成复数控制器路线 这是应该的样子吗 resource search Gives me search POST search format action gt create
  • 在 Sinatra 中运行后台进程

    我有 Sinatra Rails 应用程序和一个启动一些漫长过程的操作 通常我会为后台作业排队 但这种情况太简单了 后台进程很少启动 所以队列是一个开销 那么如何在没有队列的情况下运行后台进程呢 get build logs project
  • 将查询字符串参数作为表单发布的一部分发送

    有没有办法捕获查询字符串并将其作为表单帖子的一部分发送 我正在使用 Rails 2 3 5 我的用户所在的页面有多个查询字符串参数 在此页面上 他们将提交一份表格 在接收帖子的操作中 我想知道这些查询字符串参数是什么 显然 它们不是作为邮件
  • 子文件夹和关系中的 Rails 模型

    我在自动加载的文件夹中组织了一些轨道模型 config autoload paths Dir Rails root join app models 我可以直接使用所有模型 例如Image first file name 但是当我尝试通过关系
  • 如何配置database.yml以部署到Heroku

    我最近升级到了最新版本的Rails 并且不明白如何将应用程序部署到Heroku 这是我的database yml file default default adapter postgresql pool 5 timeout 5000 dev
  • PHP 的脚手架 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 PHP 中有什么东西可以像 Rails 一样创建基本的脚手架吗 编辑 我需要一些东西来快速原型化 一些框架比如Symfony http www sym
  • Rails 3.2:用 json 序列化中的空字符串替换 null 值

    我正在使用 Rails 3 2序列化 http www simonecarletti com blog 2010 04 inside ruby on rails serializing ruby objects with json 将 ru
  • 如何根据域名更改视图格式

    我想知道是否有任何方法可以根据域名更改相同 Rails 应用程序的视图格式 例如 www domain com gt respond to format html api domain com gt respond to format xm
  • 如何在不初始化Rails的情况下从schema.rb创建数据库?

    我正在尝试从 schema rb 创建所有表 我使用命令 rake db schema load 但是 这失败了 因为在我的一个初始化程序中 它引用了一个显然不存在的模型 表 因为数据库为空 我可以注释掉这些行 然后再次运行 schema
  • 如果即使对于开源项目,rails 项目的任何源代码也应该被隐藏怎么办? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 这是一个很难寻找的东西 如果我有一个开源 Rails Web 应用程序项目 其源代码是公开托管的 例如在 GitHub 上 如果该应用
  • Rails 的多个数据库不适用于远程数据库

    我有一个远程只读 postgres 数据库 它是通过 docker 实例维护的卡尔达诺数据库同步 https github com input output hk cardano db sync 我设法将开发数据库连接到它 它工作正常 但由
  • 回形针/乘客 NotIdentifiedByImageMagickError:

    当我尝试上传照片时红宝石 on Rails http en wikipedia org wiki Ruby on Rails using 回形针 http github com thoughtbot paperclip在我的本地机器上它运行

随机推荐

  • 图像/png 响应的原始响应

    我收到一个带有原始响应的响应主体 它应该代表一个 png 图像 我的问题是如何解码它并使其可渲染 PS 当我使用邮递员来测试这个时 我意识到邮递员可以渲染这个原始字符串 我想知道它是如何做到的 PNG IHDR X PPHYs o d ID
  • Excel Q - 带有二维数组的 SUMIFS

    我有一个二维数组 水平轴上的日期和垂直轴上的标识号 我想要以特定日期和 ID 为条件的总和 并且我想知道如何使用 SUMIFS 来执行此操作 由于某种原因 我似乎不能 因为数组是二维的 而标准范围是一维的 谁能给我关于我可以使用的其他公式的
  • 如何将形状渲染为字符串?

    我正在使用 Orchard 1 6 想要使用主题自定义布局等将视图渲染为字符串 事实上有Orchard cms 渲染形状作为电子邮件模板 https stackoverflow com questions 7061044 orchard c
  • 是否可以使用 Firebase 动态链接指定短链接?

    这个问题是关于我认为 REST API 无论如何来自文档 和通过 Firebase 控制台提供的行为之间的差异 这是控制台 然而当我看到REST API 文档 https firebase google com docs reference
  • WPF 网格布局

    是否可以在 WPF 中使用 Grid 来设计类似的东西 设计列很容易 但是行呢 或者有没有更好的解决方案 比如另一个容器 将每个矩形想象为模块 GroupBox 创建一个包含两列的外部网格 在此网格中 放置另外两个网格 每列一个 这将导致所
  • Ionic iPhone X 安全区域无法正常工作

    我正在尝试在顶部工具栏和底部选项卡区域之间安装一个 我需要它能够在 iPhone 5 X 和 iOS 10 11 上运行 如果你忽略iOS10 那么就不存在问题 但我还需要旧版本才能工作 这是我的 CSS margin top 在 iOS
  • F# 编码练习

    我一直在 Visual Studio 2010 中涉足 F 我是一名在 C 和 Java 等面向对象语言方面拥有更多代码 架构设计经验的开发人员 为了扩展我的技能并帮助做出更好的决策 我正在尝试使用不同的语言来做不同的事情 特别是掌握使用函
  • 如何使用 iPhone SDK 访问身份配置文件和证书?

    我正在尝试使用用户通过打开电子邮件附加的 cer p12 存储的证书 身份来验证我的应用程序上的用户身份 该证书显示在手机设置应用程序的 配置配置文件 组下 有没有什么方法可以使用iphone SDK访问证书 我尝试使用安全框架 但似乎只能
  • 如何检查 uiviewcontroller 是否存在于 uinavigationcontroller 堆栈中

    我有一个UINavigationController 我必须从 a 中弹出一个视图UINavigationController并将其替换为另一个视图 我们如何才能搜索到一个UIViewController对象并将其替换为另一个 当我打印时
  • 作为数据流写入 div

    考虑写入 div 的 AJAX 调用 recent req post result php d data function returnData content html returnData PHP 脚本位于result php执行一些需
  • 将包含对象的数组压平为 1 个对象

    给定输入 a 1 b 2 c 3 如何返回 a 1 b 2 c 3 对于数组这不是一个问题 http underscorejs org flatten使用 lodash 但这里我们有对象数组 Use Object assign https
  • 如何在Windows 8上执行“jps”命令?

    我想查看我的工作 java 进程 所以我想执行jps m 但在我的新 Windows 8 机器上出现此错误消息 Microsoft Windows Version 6 3 9600 c 2013 Microsoft Corporation
  • 如何使用 fs.copyTpl 忽略 Yeoman 中的文件

    我怎样才能忽略文件 我想排除任何子目录中以 开头的所有文件 我使用这两种方法没有成功 this fs copyTpl this templatePath basicFiles this destinationPath answers ign
  • 调用未定义的函数 MYSQL_NUM_ROWS() [重复]

    这个问题在这里已经有答案了 我正在尝试使用 php 验证登录 但收到此错误 致命错误 未捕获错误 调用 opt lampp htdocs social index php 100 中未定义的函数 MYSQL NUM ROWS 堆栈跟踪 0
  • 使用多分支管道触发詹金斯构建标签创建

    我有一个舞台我的詹金斯文件 https github com ryandawsonuk activiti build blob 5d60df0b0e1410f901c64313d90e7aa03054c1df Jenkinsfile L79
  • 在 android volley 中使用 StringRequest 时如何处理响应中的对象数组

    我有安卓应用程序 在该应用程序中 我在服务器上发布一些字符串数据并获得一些响应 问题是 我收到 jsonstring 中的响应 但我希望此数据位于 json 数组中 尽管当我使用 JsonArrayRequest 时 它不允许在参数中使用
  • 在运行量角器测试时进行 API 调用

    我已经使用构建了一个网络应用程序angular2 0 and typescript 现在我正在写E2E为我的网站使用protractor 现在 在我的一项测试中 我需要进行 API 调用 HTTP GET 请求 并使用响应值作为测试用例中的
  • MKPolylineView initWithPolyLine:在 iOS 7 中已弃用

    我收到以下错误 initWithPolyline 已弃用 首先在 iOS 7 0 中弃用 MKPolylineView lineView MKPolylineView alloc initWithPolyline overlay 代替这个的
  • 第99章 啤酒瓶递归好像不行

    好的 这是我在学习过程中编写的简单代码 void SingTheSong int NumOfBottles if NumOfBottles 0 printf there are simply no more bottles of beer
  • 如何使用 ActiveAdmin 创建 STI 子类的对象

    给出以下设置 当前不起作用 class Employee lt ActiveRecord Base end class Manager lt Employee end ActiveAdmin register Employee do for