如何通过抽象活动记录向子类添加范围

2024-03-02

我想要一些子类,它们都应该有一个范围(同名)。尽管我知道直接继承不可能做到这一点,但基本思想如下:

class MySuperClass << ActiveRecord::Base
abstract_class = true
scope :scopeForAllSubclasses , lambda {|my_var| where(:var => my_var )}
end

class Subclass1 << MySuperClass
#has attribute var
end

class Subclass2 << MySuperClass
# has attribute var
end

所以现在我想打电话

Subclass1.scopeForAllSubclasses123).all

and

Subclass2.scopeForAllSubclasses(123).all

重点是我想要一组类,它们都通过设计实现了这个范围,而不仅仅是因为开发人员决定这样做。

有任何想法吗?


您可以使用 mixin 而不是超类来做到这一点:

module ScopeBuddy
  def self.included base
    base.instance_eval "scope :scopeForAllSubclasses , lambda {|my_var| where(:var => my_var )}"
  end
end

class ClassA
  include ScopeBuddy
end

class ClassB
  include ScopeBuddy
end

这会将范围注入到每个实例中。

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

如何通过抽象活动记录向子类添加范围 的相关文章

  • 继承的静态成员的静态初始化

    考虑这个示例代码 public class A
  • 当 config.cache_classes = true 时缺少方法

    我有两个名为 Scope 和 ScopeItem 的 ActiveRecord 模型 具有 has many 关系 class Scope lt ActiveRecord Base has many scope items end clas
  • 在 Rails 3.2 + SimpleForm 中显示嵌套表单有错误的字段

    我有一个Flight模型嵌套在一个FlightLog模型 AFlightLog可能包含许多航班 我使用 SimpleForm 进行引导安装 这样当验证失败时 可以用错误类包围带有错误的表单元素 问题是 即使触发了嵌套模型的验证 simple
  • 将参数传递给基类构造函数

    如果基类和派生类都有带参数的构造函数 那么我们在哪里将参数传递给基类构造函数 像这样 public class DerivedClass BaseClass public DerivedClass int derivedParam Stri
  • 如何在控制器内部使用 auto_link

    在我的控制器中 我需要构建一个 JSON 对象 如何在控制器内使用 auto link 现在它错误 NoMethodError undefined method mail to for
  • 验证 ActionCable 连接

    我发现了一个很棒的 ActionCable gem 它是 SPA 的一个很好的解决方案 我只想发送html css and js资产 所有其他连接将通过ActionCable 交换字符串或者整数并不难 但是如何通过ActionCable登录
  • 同一模型之间的两个 has_many 链接

    I have users其中有products通过 habtm 链接 该链接正在运行 我想添加一个链接user模型和product模型 以跟踪creator该产品的 当然 谁并不总是拥有该产品 但是当我写在我的user and produc
  • rvm编译安装ruby 2.5.0出错

    我正在尝试使用 rvm 安装 ruby 2 5 0 但出现错误 我在 Ubuntu 18 16 和现在的 Linux Mint Cinnamon 上尝试过 基本上我在运行安装 ruby 的代码之前所做的是 打开 GPG 密钥https rv
  • 如何覆盖 Ruby Ranges 的 .. 和 ... 运算符以接受 Float::INFINITY?

    我想覆盖 and Ruby 中的运算符Range 原因是 我正在处理数据库中的无限日期范围 如果你拉一个infinty从 Postgres 中取出日期时间 你会得到一个Float INFINITY在红宝石中 问题是 我无法使用Float I
  • 枚举的子类化

    有没有一种简单的方法来子类化Javaenum 我问这个问题是因为我有大约 10 个实现相同接口的对象 但它们对某些方法也有相同的实现 因此我想通过将所有相同的实现放置在扩展的中间对象中来重用代码Enum它也是我需要的所有其他类的超类 或许事
  • 在 Rails 6 上定义 Secret_key_base 的正确方法是什么?

    正确的定义方式是什么secret key base既然我们已经有了每个环境的凭据 就可以在 Rails 6 上使用了吗 我的环境有变量SECRET KEY BASE但 Rails 并没有接受它 我尝试定义secret key base in
  • 我的整个 Rails 应用程序仅从一个文件获取 css 为什么

    我为两个控制器添加了不同的 css 文件 但我的整个应用程序仅从product css 我为两个控制器添加了不同的 css 文件 但我的整个应用程序仅从product css我为两个控制器添加了不同的 css 文件 但我的整个应用程序仅从p
  • Rails 中的 PDF 导出

    我需要将包含一些图表的 HTML 页面导出为 PDF 有哪些好的 gem 可以做到这一点 PDFKit http railscasts com episodes 220 pdfkit http railscasts com episodes
  • 当一组工作人员完成时如何执行 Sidekiq 回调

    假设我有一个 Sidekiq 任务将产品处理到我的数据库 每个产品都按商店分组 因此我的代码的一个过于简化的示例将是这样的 stores each do store store products each do product Produc
  • 忽略 git 中的本地配置文件

    Rails 应用程序中有一些本地文件 属于我们存储库的一部分 我希望 git 忽略它们 基本上 我希望 git 忽略我对 config environments 目录和 config application rb 文件中的任何内容所做的所有
  • 获取设备中的当前用户ID

    如何使用设备获取控制器中的当前用户 ID 在我的控制器中我有这样的东西 def index me current user c User find me sheets c time sheets end 我收到一条错误消息 无法找到没有 I
  • 多态控制器和调用对象

    我的地址具有多态关系 可以由成员或依赖者拥有 一切看起来都很棒 直到我意识到除非我遗漏了一些东西 否则我不知道创建它的对象是什么类型 有没有办法告诉路由文件包含对象的类型 Models class Member lt ActiveRecor
  • Rails 注释分段错误

    有一些问题围绕着这个问题 但没有什么真正能满足我的需求 After I bundle install下面列出了我的 Gemfile 我运行annotate并出现以下错误 Users nickcoelius rvm gems ruby 1 8
  • 捆绑安装无法从 https://rubygems.org/ 获取规格

    我正在尝试遵循 Hartl Rails 教程 但在使用捆绑器 gem 时遇到了问题 使用命令 bundle install 或 bundle update 时 我得到以下输出 从中获取源索引https rubygems org https
  • 创建一个简单的 Rails 3 文本助手 Gem [重复]

    这个问题在这里已经有答案了 我一直在开发我的第一个 Rails 3 插件 以打包一个我喜欢在ApplicationHelper我所有的应用程序 你可以看到整个代码在 Github 上 https github com burlesona s

随机推荐

  • 如何从 Xcode 的代码补全中排除某些术语? (自动完成、内容辅助)

    众所周知 Xcode 的代码补全功能非常棒 同时也是必要的 但有时它也可能很烦人 有什么方法可以修改可能的完成结果列表吗 例如 我一直在使用 CGSizeMake 但从来不想使用首先建议的 CGSizeMakeWithDictionaryR
  • 应按什么顺序释放 COM 对象和垃圾收集?

    关于释放 COM 对象和垃圾收集 有很多问题 但我找不到专门解决这个问题的东西 当释放 COM 对象 在本例中具体为 Excel Interop 时 我应该按什么顺序释放引用并调用垃圾回收 在某些地方 例如here https stacko
  • 如何将 jquery ui 可拖动可排序内容与自定义比例代码结合起来?

    我正在尝试将我的可拖动可排序内容与一些适合我的比例代码结合起来 我只是还没找到好的解决方案 看看那个 http jsfiddle net UXLAE 7 http jsfiddle net UXLAE 7 我已经注释掉了比例代码 以便您可以
  • Minio:存储桶策略与匿名/授权访问有何关系?

    Minio 有以下政策 每个桶 https github com minio minio java blob 6a4cf897df8c55cf4b46ed32617bf8bf41efe53c api src main java io min
  • 保存已创建的实时照片

    我有一些创建了 JPEG 和 MOV 文件的实时照片 现在我想将它们导入到应用程序中 该应用程序将允许用户将实时照片保存到他们的照片库中 我该怎么做呢 我调查过这个 https github com genadyo LivePhotoDem
  • 在 .NET 中使用线程本地存储的最佳实践是什么?

    我的应用程序中有一个要求 我认为可以通过使用线程本地存储来满足 但我想知道这是否是最好避免的事情之一 我读过一些关于这个主题的文章 http www dotnetcoders com web Articles ShowArticle asp
  • 在散景中动态添加小部件

    我想在散景中动态添加滤镜 即每次按下按钮时 都会附加一个新的滤镜 然而 添加新的小部件后 布局会被破坏 新的小部件会覆盖旧的小部件 而不是重新计算布局 代码示例 from bokeh layouts import row column fr
  • Unix:cat-ing 文件自身 - 为什么这会清空文件? [复制]

    这个问题在这里已经有答案了 有人可以向我解释一下为什么这段代码有效吗 即 file2 txt 是 file1 txt 按字母顺序排序的内容 cat file1 txt sort gt file2 txt 但是当我这样做时 file1 txt
  • Emacs .dir-locals.el - 设置键绑定

    我不确定这是否可行 但我想通过使用设置一些项目特定的键绑定 dir locals el 当然 dir locals el必须包含一个特殊的设置列表 所以我不能这样做 global set key 24 down move text down
  • 用平均值替换缺失值 - Spark Dataframe

    我有一个 Spark Dataframe 其中缺少一些值 我想通过用该列的平均值替换缺失值来执行简单的插补 我对 Spark 很陌生 所以我一直在努力实现这个逻辑 到目前为止 这是我设法做到的 a 要对单个列 假设是 A 列 执行此操作 这
  • 选择 ListboxItem 而不是 Index(突出显示,因为我会单击它)

    关于我的项目 我想通过索引突出显示搜索功能列表框项目 当前阶段 private void Menu Search Click object sender RoutedEventArgs e search person Interaction
  • ANSI C 中的超便携、小型复杂配置文件库?

    我正在寻找一个非常可移植 简约 小型的 ANSI C 语言库 没有外部依赖项 或很少 编译后大小小于 100K 我需要它来创建一个中等复杂的配置文件 并且它必须支持 Unicode 还有一些要求 可以使用 嵌入 静态链接到专有代码 在应得的
  • 过滤掉特定条件之前的行

    我有以下数据集 ID lt rep c A B times c 3 4 Departure lt c TRUE FALSE TRUE TRUE FALSE FALSE TRUE Date lt c Jan 1 Jan 2 Jan 3 Jan
  • 如何在 GNU Emacs 中逐行滚动?

    To put it simply I m trying to get scrolling in emacs like in vim and most other editors when I m for example two lines
  • FabricJS 文本框 - 某些字体的光标位置设置不正确

    在上图中 光标应该位于末尾 但由于某种原因 它被放置在最后一个字符之前 这只发生在某些字体上 我认为这与自定义字体的加载方式无关 该图像取自http fabricjs com loadfonts http fabricjs com load
  • 聚类和贝叶斯分类器 Matlab

    因此 我正处于下一步该做什么的十字路口 我开始学习一些机器学习算法并将其应用于复杂的数据集 现在我已经做到了 我从一开始的计划就是结合两种可能的分类器 试图建立一个多分类系统 但这就是我被困住的地方 我选择聚类算法 模糊 C 均值 在学习了
  • python yaml.dump 错误缩进

    我正在执行以下 python 代码 import yaml foo name foo my list foo test bar test2 foo test3 bar test4 hello world print yaml dump fo
  • 如何从 C# 显示文件属性对话框安全选项卡

    这个帖子 如何从 C 显示文件的 属性 对话框 https stackoverflow com questions 1936682 how do i display a files properties dialog from c描述了如何
  • 如何在 Angular 中使用 *ngFor 设置 formControlNames?

    我正在尝试使用设置表单控件 ngFor数组中的对象 根据用户的不同 有时我的数组中会有 1 个对象 但有时会有多个对象 我的问题是我想创建一个formControlName使用我可以但不确定如何在组件中设置表单组验证器的循环 只需像下面这样
  • 如何通过抽象活动记录向子类添加范围

    我想要一些子类 它们都应该有一个范围 同名 尽管我知道直接继承不可能做到这一点 但基本思想如下 class MySuperClass lt lt ActiveRecord Base abstract class true scope sco