Rails 扩展 ActiveRecord::Base

2024-04-14

我已经阅读了一些有关如何扩展 ActiveRecord:Base 类的内容,因此我的模型将具有一些特殊的方法。扩展它的简单方法是什么(分步教程)?


有几种方法:

使用 ActiveSupport::Concern(首选)

阅读ActiveSupport::关注 http://api.rubyonrails.org/classes/ActiveSupport/Concern.html文档以获取更多详细信息。

创建一个名为active_record_extension.rb in the lib目录。

require 'active_support/concern'

module ActiveRecordExtension

  extend ActiveSupport::Concern

  # add your instance methods here
  def foo
     "foo"
  end

  # add your static(class) methods here
  class_methods do
    #E.g: Order.top_ten        
    def top_ten
      limit(10)
    end
  end
end

# include the extension 
ActiveRecord::Base.send(:include, ActiveRecordExtension)

在中创建一个文件config/initializers名为的目录extensions.rb并将以下行添加到文件中:

require "active_record_extension"

继承(首选)

参考托比的answer https://stackoverflow.com/questions/2328984/rails-extending-activerecordbase/2330533#2330533.

猴子补丁(应该避免)

在中创建一个文件config/initializers名为的目录active_record_monkey_patch.rb.

class ActiveRecord::Base     
  #instance method, E.g: Order.new.foo       
  def foo
   "foo"
  end

  #class method, E.g: Order.top_ten        
  def self.top_ten
    limit(10)
  end
end

关于正则表达式的著名引言杰米·扎温斯基 http://regex.info/blog/2006-09-15/247可以重新调整用途来说明与猴子修补相关的问题。

有些人在遇到问题时会想:“我知道,我会用 猴子修补。”现在他们有两个问题。

猴子修补既简单又快捷。但是,节省下来的时间和精力总能收回来 将来的某个时候;以复利计算。这些天我限制猴子修补以在 Rails 控制台中快速构建解决方案原型。

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

Rails 扩展 ActiveRecord::Base 的相关文章

  • Heroku:无法通过 Bundler 安装 gem

    我尝试使用以下命令将我的 Rails 应用程序推送到 Herokugit push heroku master f命令 我得到这个 Total 0 delta 0 reused 0 delta 0 remote Compressing so
  • 选择标签,指定所选选项(或将数组元素移动到索引 0)

    假设我正在查询水果列表 然后仅将水果的 ID 和名称收集到 fruit 中 32 apple 8 bannana 10 cantelope 11 grape 15 orange 41 peach 22 watermelon fruit 正在
  • Guard 不会加载 WDM

    我正在学习 Michael Hartl 的 Rails 教程 到目前为止该教程非常出色 我在高级设置一章中 他以有利于 TDD 的方式配置 Rails 环境 我安装了 Guard 并且通过运行我在 spec 文件夹中的测试 它一直正常运行
  • 查询参数和assert_generates/assert_routing - 我缺少什么?

    我想我已经介绍了使用查询参数测试路由的排列 但没有一种方法通过 在我的 paths rb 中 我有以下内容 resources items 然后对于我的功能测试我有 require ruby debug require test helpe
  • 指定的 sqlite3 gem 未加载

    虽然我对 Ruby on Rails 比较陌生 但我开发应用程序已经有一段时间了 我似乎遇到的问题是 当我创建一个新的 Rails 应用程序 本地 使用 c9 时 当我启动 apache 服务器时 我似乎收到此错误 Specified sq
  • 在 Rails 3.2 + SimpleForm 中显示嵌套表单有错误的字段

    我有一个Flight模型嵌套在一个FlightLog模型 AFlightLog可能包含许多航班 我使用 SimpleForm 进行引导安装 这样当验证失败时 可以用错误类包围带有错误的表单元素 问题是 即使触发了嵌套模型的验证 simple
  • 使用 Ruby on Rails 进行设计 - 强制用户在首次登录时更改密码

    我有一个运行 Devise 的 RoR 应用程序 Rails 4 2 Ruby 2 2 0 我已经进行了设置 以便管理员用户 标识了我添加到用户模型中的 is admin 布尔值 能够创建新的用户帐户 为他们提供生成的密码和确认电子邮件 这
  • 如何自定义 Mailboxer 电子邮件的模板?

    它会自动发送电子邮件 其中写着 You have a new message subject You have received a new message Body Visit http example com and go to you
  • Mongoid 命名范围比较同一文档中的两个时间字段

    我需要在 Mongoid 中创建一个命名范围来比较同一文档中的两个时间字段 例如 scope foo where gt updated at gt gt checked at 这显然不会像它对待的那样起作用 checked at作为一个符号
  • 渲染:带参数的动作

    我有一个有 2 种方法的类 第一个方法由视图使用一些 GET 参数 params page 调用 我想保存这些参数并通过渲染操作将它们发送到我的第二个方法 class exemple def first sql save of params
  • 如何使 Rails 3 资源预编译速度更快?

    我有一个正在运行的 Rails 3 2 1 应用程序 我正在通过 Capistrano 进行部署deploy assets它运行deploy assets precompile task 一切工作都很好 除了编译本身非常慢 我没有那么多 C
  • 自动测试无限循环

    我在 Rails 项目中使用自动测试时遇到了一个问题 即当测试失败时 即 我修改了测试文件并且自动测试自动运行测试 自动测试会不断尝试运行测试 当然每次都会失败 因为文件尚未被修改 而不是等到文件再次保存 当咆哮通知打开时 当我试图修复代码
  • Rails 4 - 如何链接到 PDF 文件(名称.PDF)?

    我正在生成 PDF 文件 我的链接如下所示 当我点击这个时 它会带我去 display invoice 123456789 这是一个 HTML 版本 在控制器中的操作如下 def display invoice if params invo
  • 如何在 Rails 3.2.1 版本中注释 Rails 模型

    我正在尝试遵循一些在线教程来在 Rails 中注释我的模型 然而 似乎所有教程都在谈论过时的注释版本或不正确的安装 这真是一团糟 到目前为止我已经尝试过以下方法 1 在 Gemfile 中添加此内容 gem annotate 2 4 0 2
  • Rails:format.js 或 format.json,或两者?

    可能很明显 但我仍然缺乏基本知识 那么在控制器内部 两者都可以使用 还是总是 Javascript 所以两者是相同的 json and js是两种不同类型的响应 它们在 Rails 中被定义为不同的 MIME 类型 Mime Type re
  • 获取设备中的当前用户ID

    如何使用设备获取控制器中的当前用户 ID 在我的控制器中我有这样的东西 def index me current user c User find me sheets c time sheets end 我收到一条错误消息 无法找到没有 I
  • 从 Ruby 中的 DateTime 变量获取时间

    我在 ruby 中工作 我有一个包含数据库中今天的日期时间的对象 我只想要时间截断数据 我怎样才能得到那个 Try 日期时间 strftime http www ruby doc org stdlib 1 9 3 libdoc date r
  • 在私有控制器方法中返回redirect_to

    前言 我正在使用设备进行身份验证 我试图阻止未经授权的用户查看 编辑或更新其他用户的信息 我最关心的是用户将 DOM 中的表单修改为另一个用户的 ID 填写表单 然后单击更新 我已经专门阅读过 像下面这样的东西应该有效 但事实并非如此 SO
  • 为什么“rails server -e production”会出现“没有路由匹配“/”并且样式表未加载?

    它正在运行 Rails 3 0 0 或 Rails 3 0 5 使用 Ruby 1 9 2 当处于开发模式时 rails server then http 本地主机 3000 http localhost 3000一切正常 并且http l
  • 创建一个简单的 Rails 3 文本助手 Gem [重复]

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

随机推荐

  • Google 电子表格作为网络应用程序的数据库

    有谁知道我是否可以使用 Google 电子表格来存储自定义 HTML 表单的结果 我知道 Google 电子表格允许在 Google 域本身上创建表单 但是是否可以使用 Google 电子表格作为其他网络应用程序的数据库 谷歌电子表格 AP
  • 左移 255 位(作为一个字节)

    谁能解释为什么以下内容无法编译 byte b 255 lt lt 1 错误 常量值 510 无法转换为 字节 我期待二进制的以下内容 1111 1110 类型转换难倒了我 C 中的数字文字是int not byte 编译器将评估位移位 因此
  • 无法解决 SonarQube 错误“使该行从第 3 列开始”

    我在 xml 中有很多行都存在此错误 布局 字符串 可绘制对象 我尝试将每列的空间更改为 3 在出现此错误的行中放置 3 个选项卡 但在 SonarQube 中仍然出现此错误 我该如何解决这个问题 我在这里举了一个我收到此错误的示例
  • 令人困惑的类型错误

    我有一个小型 Python 程序 它应该通过运行适当的方法来对按下向上按钮做出反应 但它没有这样做 而是给了我一个令人困惑的错误 from tkinter import class App def init self master self
  • 检查 Objective-C 中的日期格式

    我收到一个包含日期的字符串 我想检查它是否具有 dd MM yyyy 格式 现在我正在使用在同一页面中找到的代码 NSDate date dateFormatter dateFromString dateString if date nil
  • 为什么 JavaScript 函数调用要用括号括起来? [复制]

    这个问题在这里已经有答案了 这两个 javascript 函数调用有什么区别 function alert foo 与此相比 function alert foo 这样做是为了可读性 您给出的两个示例之间没有真正的功能差异 但它们都非常接近
  • 在react-native中,任务因请求而被孤立——这是什么意思?

    我正在尝试为带有按钮和其他操作的图块构建一个网格系统 我分叉尝试使用 React Native Playground 网格图像源 你可以找到here https rnplay org apps sXriww 添加时会产生以下 堆栈跟踪 和错
  • 在 VARCHAR 字段中使用 MAX()

    我有一个包含以下数据集的表 ID VARCHAR2 field D001 D002 D010 D0012 I use max 在这个领域里 Select max ID from
  • 宏观评估顺序[重复]

    这个问题在这里已经有答案了 可能的重复 宏中的 和 https stackoverflow com questions 4364971 and in macros 为什么第二个 printf 的输出是 f 1 2 宏的计算顺序是什么 inc
  • 下载外部pdf文件到chrome打包应用程序的文件系统

    有没有办法将pdf文件从服务器保存到chrome打包的应用程序 在我的 chrome 打包应用程序中 我有这样的东西 Download 当用户单击此超链接时 我应该能够将该 pdf 文件下载到我的 chrome 打包应用程序文件系统中 下载
  • SQL Server WHERE 条件不考虑空格

    我的名字和姓氏后面带有空格 我有两个 SQL 查询 即使我搜索时没有空格 第一个查询也会返回结果 第一个查询返回不需要的结果 此行为在所有版本的 SQL Server 中是否一致 这是一种已知的行为吗 它是否记录在msdn for SQL
  • char * 变量地址与 char[] 变量地址

    我从以下两个声明和初始化中打印出地址和字符串 char strPtr char This is a string made on the fly char charArray Chars in a char array variable 打
  • 我什么时候应该关闭数据库连接?

    PHP脚本中是否必须关闭连接 根据数据库服务器的配置 同时打开的连接数可能受到限制 所以 如果你的脚本 做一些查询 然后 进行一些长时间的计算 而不再进行任何查询 在完成所有查询后关闭连接并仅在需要时才打开连接可能会很有趣 不过 请注意 无
  • JavaScript 图像 onload 事件绑定

    我有这段代码循环遍历数组并加载图像并在加载图像时发出通知 for var i 0 i lt arr length i var imageObj new Image imageObj src url i imageObj onload fun
  • 如何从 mysqldump 恢复特定表

    我有一个使用以下命令获取的 mysqldump 文件 mysqldump u root password
  • PHPExcel 日期格式

    我从 MS SQL 服务器获取 2012 08 09 00 00 00 不带引号 格式的输出 但是 当我将其写入 Excel 文件时 我无法以日期格式写入它以在 Excel 上进行 dd mmm yyyy 格式 因此 我尝试以 date 2
  • 希腊字符串的长度大于应有的长度

    我正在编写一个程序 我将一串希腊字符作为输入 当我打印它的 len 时 它输出它的双精度 例如 如果 ch 希腊字符 或 ch printf d strlen ch 输出 4 而不是 2 如果 ch ab 则输出 2 这是怎么回事 您可以使
  • Vaadin 与 Bootstrap

    我计划制作一个应用程序 该应用程序在客户端具有复杂表单和逻辑验证的视图 我计划使用 AJAX 进行提交并具有一些视觉吸引力 我想要那些具有 Bootstrap 和 或 CoffeeScript 和 Vaadin 开发经验的人的推荐 我有两个
  • 如果 javascript "(new Date()).getTime()" 从 2 个不同的时区运行

    如果 JavaScript new Date getTime 同时从2个不同的时区运行 你会得到相同的值吗 这个值会受到运行浏览器的机器上设置的系统时间的影响吗 是的 它受系统时间的影响 但是 如果本地时间正确 对于计算机设置的任何时区 则
  • Rails 扩展 ActiveRecord::Base

    我已经阅读了一些有关如何扩展 ActiveRecord Base 类的内容 因此我的模型将具有一些特殊的方法 扩展它的简单方法是什么 分步教程 有几种方法 使用 ActiveSupport Concern 首选 阅读ActiveSuppor