Mongoid 自定义 setter/getter 和 super

2023-12-19

我正在尝试修改属性 Mongoid 模型上的设置器,但与 ActiveRecord 不同,我无法调用 super 来让 Mongoid 实际设置属性,因为模型正在使用include Mongoid::Document而不是一个子类ActiveRecord::Base.

我希望能够做这样的事情。

class User
    include Mongoid::Document

    embeds_one :email_account

    def email_account=(_email_account)
        ret = super
        puts "email account updated!"
        do_something
        ret
    end
end

除了,因为它不是子类,所以产生

NoMethodError: super: no superclass method

Ideas?

EDIT:

你会如何做一个吸气剂,比如

class User
    include Mongoid::Document

    embeds_one :email_address

    def email_address
        super || "[email protected] /cdn-cgi/l/email-protection"
    end
end

在我看来,你所做的根本不属于用户模型。我将在 EmailAccount 模型中创建另一个方法,并将其与 after_save 回调挂钩。

class EmailAccount
  include Mongoid::Document

  embedded_in :user

  after_save :do_something

  def do_something
    puts "email account updated!"
    do_actual_something
  end
end

另一种方法是使用观察者http://mongoid.org/docs/callbacks/observers.html http://mongoid.org/docs/callbacks/observers.html

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

Mongoid 自定义 setter/getter 和 super 的相关文章

随机推荐

  • 从不同的屏幕获取值(kivy)

    我正在尝试实现以下目标 从屏幕文件夹 B 中的标签 id fb 捕获文本 并通过按按钮 从文件夹 B 获取 txt 将其复制 添加到屏幕文件夹 A 中的标签 id fa 请找到以下代码 提前致谢 文件main py from kivy ap
  • 当我更改 pom.xml 文件中的依赖项时,如何让 Eclipse-Maven 项目自动更新其类路径?

    我正在将 Eclipse Mars 与 Maven v 3 3 结合使用 当我更新 pom 中的依赖项 更改版本 时 即使我右键单击我的项目并选择 Maven gt 更新项目 我的 Eclipse Maven 项目也不会选择它 我知道这一点
  • 关闭打开的子菜单 - jQuery 手风琴

    我有一个 jQuery 菜单 我希望能够关闭一个打开的菜单 以便关闭所有菜单 立即关闭它的唯一方法是单击打开另一个菜单 我已经为此工作了很长时间 但相对没有任何进展 有什么方法可以让打开的菜单关闭而无需单击其他菜单 这是代码 http js
  • 将 hive 中的 Ascii 值转换为字符

    我想转换ascii对其价值特点在 hive 中 hive 中是否有任何现有函数 就像我们有的那样 字符函数在 SQL Server 中 有谁知道如何在配置单元中实现这一点 例如 对于 65 结果将为 A 提前致谢 这可以通过组合一些内置函数
  • 如何在 Windows 中克隆包含 Windows 文件系统无效符号的存储库

    我想克隆一个 git 存储库 但是此存储库中有一个名为 Image Arrow 的文件夹 标记对于 Windows 中的文件名和文件夹名来说是无效的符号 因此我无法在 Windows 系统中克隆它 即使我将存储库下载为 zip 文件 该 z
  • 为下一个 C++ 标准做准备

    一连串的问题涉及BOOST FOREACH促使我询问 Boost 库的用户他们正在做什么 如果有的话 来准备他们的代码以移植到提议的新 C 标准 又名 C 0x 例如 如果您使用shared ptr ifdef CPPOX include
  • JSch 连接关闭后“tail -f”进程不会退出

    我使用 JSch 来跟踪远程计算机中的文件 但我发现程序退出后 tail f 进程仍然存在于远程计算机中 如果我删除 f 参数 一切正常 我尝试使用 sendSignal 但它不起作用 OpenSSH 似乎没有实现该功能 这是测试代码 pu
  • sorl-thumbnail:写入图像文件时编码器错误-2

    我已经使用 sorl thumbnail 一段时间了 没有出现任何问题 但是 开始出现以下错误 encoder error 2 when writing image file 以下代码会导致错误 from sorl thumbnail im
  • 绑定到特定的IP地址和端口来接收UDP数据

    我正在尝试接收由 PlayCap 广播到网络地址 192 168 103 255 端口 3000 的 UDP 数据 http www signal11 us oss playcap http www signal11 us oss play
  • 如何对 redux 形式 FieldArray 状态的切片运行验证

    我正在运行与这里的示例非常相似的东西 http redux form com 6 0 5 examples fieldArrays http redux form com 6 0 5 examples fieldArrays 假设我想在每个
  • Java Spring Batch 中的 ETL 与 Apache Spark 基准测试

    我使用 Apache Spark Scala 已有 5 年多了 学术和专业经验 我一直发现 Spark Scala 是构建任何类型的批处理或流式 ETL ELT 应用程序的强大组合之一 但最近 我的客户决定将 Java Spring Bat
  • Android Matcher 和 Pattern 从链接中切出

    我有一个包含链接的字符串 ex 字符串的 我们喜欢吃巧克力 吃一份http t co 9BDZvcx59d http t co 9BDZvcx59d 所以如果我按原样显示这个字符串 它会是一样的 但如果我使用匹配器和模式来检测链接并为其着色
  • VTK 与真实 X 一起工作,与 Xvfb 一起崩溃

    我正在调试一个第 3 方 Python 脚本 该脚本使用 VTK 库实现无头图像处理 当使用常规 X 窗口会话运行时 它会按预期工作 窗口会瞬间闪烁 当针对 Xvfb 内存中的虚拟帧缓冲区 运行时 它会崩溃 脚本是这样的 省略了一些废话 i
  • 执行“if”条件“x”毫秒并停止“y”毫秒并重复该条件?

    我有一个程序 可以在程序运行期间连续测试 if 循环内的条件 但我想要这个如果条件在一段时间内 例如 5ms 变为 true 或 active 然后停用如果条件接下来的 10 毫秒 然后继续这个模式直到用户关闭程序 我不知道如何解决这个问题
  • Symfony2 中的系统 (SonataAdminBundle) 缺少请求的 PHP 扩展 intl

    我尝试安装沙箱 但从作曲家那里收到以下错误 加载包含包信息的 Composer 存储库 来自锁定文件的依赖项 您的要求无法解析为 一组可安装的软件包 问题1 Installation request for sonata project i
  • 溢出错误图

    我想做声音 音频和音乐处理方面的事情 在此之前 我创建了一个 10 秒扫描的样本信号 我有一个简单的脚本 必须绘制一些信号 第一个信号是一个简单的正弦波 第二次扫描 两者的频率都略低于奈奎斯特频率 所以没问题 代码 import impor
  • 修改每个方面的 x 轴标签

    我有这个图表 我想向每个标签添加文本N xx来表示观测值的数量 我知道如何做到这一点 并且我已经在没有面的图表上做到了这一点 当我在多面图表上尝试时 它不起作用 我在所有 3 个图表上的开盘价位上得到相同的 N 在受限制的图表上得到相同的
  • 返回 Django 中的附近位置

    我有一个 django 模型 它有一个名为的自定义属性LocationField class List models Model id models AutoField primary key True title models CharF
  • 退出按钮php

    我有这段代码 需要代码来添加注销按钮 任何人都可以写出用于注销用户的注销按钮的代码 我读了一些有关销毁会话的内容 但不知道如何编写代码 谢谢你
  • Mongoid 自定义 setter/getter 和 super

    我正在尝试修改属性 Mongoid 模型上的设置器 但与 ActiveRecord 不同 我无法调用 super 来让 Mongoid 实际设置属性 因为模型正在使用include Mongoid Document而不是一个子类Active