ruby-on-rails - 重新定义 Rails 的方法

标签 ruby-on-rails ruby

Rails 方法 Array#to_sentence 允许以下操作:

['a', 'b', 'c'].to_sentence # gives: "a, b, and c"

我想扩展此方法以允许它占用一个 block ,这样您就可以执行如下操作(其中 people 是 Person 对象的数组,具有 name 属性):

people.to_sentence { |person| person.name }
# => "Bill, John, and Mark"

我对编写扩展方法没有问题。但我不知道该把它放在哪里。 Rails 核心扩展被加载到 ActiveSupport 深处的某个地方。 我需要一个始终加载和预加载用户定义代码的位置(在任何应用程序代码之前)。

最佳答案

创建 config/initializers/super_to_sentence.rb。此目录中的所有文件都在 Rails 加载后加载,因此您将有机会覆盖 Rails 的 Array#to_sentence 定义。

对于您想在 Rails 加载之前加载的代码,将其添加到 config/environment.rb

关于ruby-on-rails - 重新定义 Rails 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/842359/

相关文章:

ruby-on-rails - 如何简化这个嵌套参数包含检查?

ruby - 测试 ruby​​ gem 二进制文件

ruby-on-rails - 使用 Bing API 示例的 Rails 站点搜索?

ruby - 如何在 sinatra 应用程序中使用 html_escape 文本数据?

sql - 我可以通过编写 SQL 而不是 ActiveRecord 来节省内存吗?

javascript - Rails 5 : JQuery inside $(document). 就绪不会从一个页面触发到另一个页面,仅在重新加载时触发

jquery - 在 javascript 中嵌入 ruby

ruby-on-rails - cucumber 和种子数据

javascript - 使用 Rails 实例变量作为 JavaScript 条件

ruby-on-rails - HABTM 查询,返回没有关联的记录