ActiveRecord 虚拟属性作为记录属性

2023-11-23

我遇到了 to_json 未渲染我的虚拟属性的问题

class Location < ActiveRecord::Base
    belongs_to :event
    before_create :generate_oid
    validates_associated :event

    attr_accessor :event_oid

    def event_oid
      @event_oid = event.oid
    end
end

event_oid 不是以下返回的数组的一部分:



Location.first.attributes
  

当使用 to_json 自动将记录属性序列化为 jason 时,这对我来说尤其是一个问题。 to_json 省略了我的虚拟属性。

如何将虚拟属性视为实际实例属性?

Edit:

to_json 只是一种方法的示例,其中将我的虚拟属性视为实际属性会很好。


您想要修改属性哈希。这里有一些额外的代码,以确保您关心的属性已准备好与 to_json 或依赖于对象加载属性的其他方法一起使用。

class Location < ActiveRecord::Base
    belongs_to :event
    before_create :generate_oid
    validates_associated :event

    after_save :event_oid

    attr_accessor :event_oid

    def event_oid
      @event_oid = @attributes["event_oid"] = event.oid if event.nil?
    end       

    def after_initialize
      event_oid
    end


end

to_json 和许多其他基于对象属性生成事物列表的方法。它是在对象初始化时使用数据库表和名称填充的,不幸的是实例变量不会更新此哈希。

附:如果您想以这种方式使用许多属性,那么这并不是很干燥。您可以使用符号数组、确定性方法名称和 class_eval 块将此过程一次应用于多个符号。

Warning

我们在这里搞乱了 Rails 的内部结构。没有人知道它如何会导致其他事情失败。除了 save 和 to_json 之外,我还没有测试过更多内容,当属性哈希包含不是列名的键时,这两种方法都可以工作。因此,使用它需要您自担风险。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ActiveRecord 虚拟属性作为记录属性 的相关文章

  • Rails has_many 通过带有附加属性的表单

    我正在尝试创建一个表单 允许用户向活动添加 编辑 删除位置 我目前找到的所有例子要么是HABTM表单 不允许编辑存在于表单中的附加属性 has many through配置 或仅列出现有关系 下面的图片显示了我想要完成的任务 该列表将显示每
  • Ruby on Rails 中的枚举

    我是一名 C 程序员 我正在研究 ruby on Rails 但我可能在心态或其他方面遇到了一些麻烦 我有一个投票对象 该对象可以是赞成 中立或反对 我通常会让投票对象有一个像这样的字段 private VoteEnum voteEnum
  • jQuery 自动完成滚动问题

    我在用着Rails3 jquery 自动完成 https github com crowdint rails3 jquery autocomplete在我的应用程序中 我遇到了以下问题 如果您在输入字段中输入某些内容以便显示自动完成数据并在
  • Rails 5.2 Active Storage 添加自定义属性

    我有一个带有附件的模型 class Project lt ApplicationRecord has many attached images end 当我附加并保存图像时 我还想保存一个附加的自定义属性 display order 整数
  • 防止Rails Turbolinks导致Google地图JS多次执行

    我目前正在开发 Rails 应用程序 但出现以下错误 您已在此页面上多次包含 Google Maps API 这可能会导致意外错误 经过一番研究后 我发现 Turbolinks 导致了这个问题 当 的时候link to单击后 Google
  • 安装了 Rails 但它说我没有:)

    我刚刚执行了这个命令来安装 Rails gem install rails 它似乎运行良好并安装了东西 然后当我按照本教程进行操作时 http guides rubyonrails org getting started html http
  • 在 Rails App 中实现 WrapBootstrap 主题

    我刚刚购买了一个 wrapbootstrap 主题 并尝试将其插入我的 Rails 应用程序中 一些 css 如填充 导航栏 字形图标 和大多数 javascript 无法正常运行 我将所有样式表和 javascript 分别复制到 ass
  • 初始化会破坏rails中的布局设置吗?

    在其中一个控制器中 我需要特定的布局 我添加了layout一开始 效果很好 但如果我添加一个initialize某些基于控制器的变量的函数 Rails 似乎只是忽略了layout命令 有人有同样的问题吗 我该如何修复它 class Admi
  • Rails:将参数从视图传递到控制器

    我在 Rails 中有以下模型 class Task lt ActiveRecord Base attr accessible description name project belongs to project validates na
  • Rails 6 - 操作文本和 API

    我正在创建一个 Rails 6 0 0 应用程序 它具有以下模块 网络 表格 Cruds Api 我使用的地方有一个 CRUD动作文本 https edgeguides rubyonrails org action text overvie
  • Heroku 码头部署

    我正在关注这篇文章https devcenter heroku com articles container registry and runtime https devcenter heroku com articles containe
  • 列“users.id”必须出现在 GROUP BY 子句中或在聚合函数中使用

    关系 Item belongs to Product Product belongs to User 项目型号范围 scope search gt search term select products name users product
  • S3 的 Rails 回形针默认图像

    我尝试在应用程序中使用default url 但我使用S3 存储图像 我不确定我需要在那里输入什么 URL 或者我是否必须创建一个假图像才能将所有内容放在那里 由于我的图像总是通过 S3 渲染 所以我不知道如果我只是在公共文件夹中放入一些默
  • 带分页的 Rails 随机活动记录

    我需要查找特定资源的所有记录并以随机顺序显示它们 但具有一致的分页 如果开始分页 您将不会看到相同的记录两次 每次用户访问页面时 显示顺序都应该是随机的 我在用将分页 http wiki github com mislav will pag
  • Rails 3:用户创建自定义表单?

    我正在尝试思考如何允许用户创建具有所有字段类型的自定义表单 如果有一颗宝石那就太好了 但我似乎无法在任何地方找到它 所以我有一个像这样的数据库设置 t integer form id t string name t string hint
  • Rails 4 - 如何在开发中使用 sqlite3 以及在生产中使用 PostgreSQL 和 Heroku

    我正在尝试部署到 Heroku 但不能 因为默认的 sqlite3 服务器仍然存在 检测到 Heroku 不支持 sqlite3 gem https devcenter heroku com articles sqlite3 https d
  • 如何在 Rails 3 中查看用户的实时活动?

    我想做的是让我的管理员用户能够实时 通过一些 AJAX jQuery 功能 看到我的用户正在做什么 我该如何去做呢 我认为它与会话活动有关 并且我已经开始将会话保存到数据库 而不是 cookie 但一般来说 我如何获取该信息并实时解析它 我
  • 为什么每个方法需要将其循环的值分配给变量?

    在 Rails 上工作 发现我对 Rails 的理解缺乏知识each method 不知道为什么each方法需要变量 message h2 h2 不确定为什么每个方法都需要变量 message 事实并非如此require它 你完全可以忽略它
  • 如何在保存父对象时确保子对象有效?

    假设我有两堂课 class User attr accessible name has one address validates name presence gt true validates associated address end
  • RuntimeError:无法修改冻结的数组(Rollbar、Rails 5.1 升级)

    升级到rails 5后无法使用rspec和rollbar 创建 Rails 4 应用程序 升级 gemfile 以使用 Rails 5 尝试添加防滚杆 gem support 标准配置 环境 rb Load the Rails applic

随机推荐

  • AS3 合并多个数组的最快方法

    我正在尝试编写一个可以指定任意数量的数组的函数 并且返回值将是一个包含所有指定数组的内容的数组 我已经这样做了 但这似乎是一种非常缓慢且丑陋的方法 var ar1 Array 1 2 3 4 5 6 7 8 9 var ar2 Array
  • 如何截断 STDIN 行长度?

    我一直在解析一些日志文件 发现有些行太长 无法在一行上显示 因此 Terminal app 善意地将它们包装到下一行 但是 我一直在寻找一种在一定数量的字符之后截断一行的方法 以便终端不会换行 从而更容易发现模式 我编写了一个小的 Perl
  • mysql - 多少列太多?

    我正在设置一个可能有 70 列以上的表 我现在正在考虑将其拆分 因为每次访问表时都不需要列中的某些数据 话又说回来 如果我这样做 我就不得不使用联接 在什么时候 如果有的话 被认为列太多 一旦超过了就被认为太多了数据库支持的最大限制 事实上
  • SVG 中的下标和上标

    我正在尝试使用以下代码使用 SVG 显示下标和上标从这个网站
  • Oracle 将列移动到第一个位置

    有没有办法将 Oracle 表中的列从最后一个位置移动到第一个位置 有人删除了 ID 列并重新创建了它 所以现在它到了最后 这是一个问题 因为我们的一些 PHP 脚本使用第一列作为标识符 一个抽象模型以及超过 100 个其他模型使用这个基础
  • 如何在 Google Colaboratory 中以编程方式清除 Python 输出?

    这个问题特定于 Google Colaboratory 虽然某些解决方案可能在普通的 Python 解释器中工作 但 Google Colaboratory 似乎不允许我以编程方式清除 Python 解释器输出 我已经尝试过但不起作用的解决
  • 再次迭代元组...

    我从事 C 工作已经有一段时间了 但我对模板并不熟悉 最近 我尝试编写一个类来包装std vector
  • 进行 json.dump 时如何显式设置回车符?

    我的 python 脚本生成 json 文件 我必须支持这个Python文件在Windows和Linux上工作 问题是windows和linux上的回车符不同 当我在 Windows 上运行此代码时 它输出 CRLF json 当我在 Li
  • Flutter找不到android sdk

    我刚刚尝试安装 flutter 因为我已经安装了 android studio 和 android sdk 所以我只是按照 flutter 的安装进行操作 这是我的问题 当我跑步时 flutter doctor 它告诉我 Flutter C
  • 在 MVC 中处理多个角色 - 基于操作的辅助功能

    我目前有一个项目 我似乎遇到了有关角色的问题 我想我会得到一些关于如何最好地处理该问题的意见 系统将需要可编辑 灵活的角色 不仅控制特定区域的访问 还控制系统功能的使用 添加用户 编辑用户 查看报告等 系统当前允许用户拥有多个角色 每个角色
  • 黑莓 URL 编码器

    我需要在 Blackberry 中使用 HTTP GET 请求对 URL 进行编码 任何人都可以帮助我找到如何实现这一目标 为什么不使用 RIMURL编码的帖子数据 private String encodeUrl String hsURL
  • 如何在TextureView上使用相机预览录制视频

    我一直在一些 Android 4 0 设备上使用TextureView 例如 我尝试开发一个简单的应用程序 它可以录制视频并使用TextureView进行预览 然而 据我阅读Android API文档 标准MediaRecorder需要一定
  • 编织错误。未找到对象

    我有一个未清理的dataset 所以 我已将其导入到我的 R 工作室 然后当我运行时nrow adult 在 rmarkdown 文件中并按ctrl Enter它有效 但是当我按下knit出现以下错误 Answer recommended
  • 处理 DateTime DBNull

    我在 SO 上看到过很多很多版本 但似乎没有一个能完全满足我的需求 我的数据来自供应商数据库 该数据库允许日期时间字段为空 首先 我将数据放入数据表中 using SqlCommand cmd new SqlCommand sb ToStr
  • 使用 vba 将格式化文本复制到 access 中

    我需要将 Word 中的格式化文本保存到 Access 数据库中 到目前为止 我已经设法弄清楚如何在访问字段中存储格式化文本 在表中创建备注字段并将文本格式设置为富文本 搜索SO我还没有找到关于如何将所述文本从word传输到Access的解
  • 为什么百分比填充/边距在 Firefox 和 Edge 中的 Flex 项目上不起​​作用?

    我想在弹性盒内有一个方形 div 所以我用 outer display flex width 100 background blue inner width 50 background yellow padding bottom 50 di
  • 在另一个线程(不是主线程)中创建窗口

    我有一个功能 HWND createMainWindow P2p Socket Machine toSend HWND hMainWnd CreateWindow L Class LPCWSTR nameOfConference c str
  • NextJS:动态 router.pathname 不显示路径,而是显示文件名 - 如何获取路径中的单词?

    我使这个示例尽可能简单 如果需要更多信息来解决 我可以稍后添加更多代码 我在 nextJS 中使用动态路由 我的应用程序根据通过 API 输入动态路由的关键字从 Twitter 中提取结果twitter v2 package 我正在尝试使用
  • Java基于两列排序

    可以说我有这样的表 String Int1 Int2 foo 5 0 faa 4 1 zaa 0 1 zoo 4 2 laa 4 3 loo 1 4 我想要得到的是这样的表 String Int1 Int2 foo 5 0 laa 4 3
  • ActiveRecord 虚拟属性作为记录属性

    我遇到了 to json 未渲染我的虚拟属性的问题 class Location lt ActiveRecord Base belongs to event before create generate oid validates asso