【问题标题】:How do I require a file with a re-opened class?如何要求重新打开课程的文件?
【发布时间】:2012-03-22 01:50:41
【问题描述】:

我对 RoR 很陌生,我有一个关于库初始化的问题。 如何加载从 Rails 中现有类库扩展的类?

我想在this link的基础上扩展 ActiveRecord::base 如下

# lib/active_record/add_reset_pk_sequence_to_base.rb
module ActiveRecord
  class Base
    def self.reset_pk_sequence
      case ActiveRecord::Base.connection.adapter_name
      when 'SQLite'
        new_max = maximum(primary_key) || 0
        update_seq_sql = "update sqlite_sequence set seq = #{new_max} where name = '#{table_name}';"
        ActiveRecord::Base.connection.execute(update_seq_sql)
      when 'PostgreSQL'
        ActiveRecord::Base.connection.reset_pk_sequence!(table_name)
      else
        raise "Task not implemented for this DB adapter"
      end
    end     
  end
end

我有意使用 seed.rb 中的扩展类来重置表的自动增量。 如何使用“require”语句加载文件? 我尝试了几种方法,不幸的是,对我来说效果不佳?

任何建议将不胜感激?

【问题讨论】:

  • 我对您要执行的操作有点不知所措,但您的第一步可能是在 config/initializers 文件夹中创建一个新文件并在其中需要该文件
  • @JasdeepSingh 感谢您的评论。无论如何,将文件放入建议的文件夹后,它就像一个魅力!
  • 好吧,我想我可以将其添加为答案.. :)

标签: ruby-on-rails module require


【解决方案1】:

将文件放在 config/initializers 文件夹中或使用该文件夹中的 require 加载它..

【讨论】:

  • 这似乎不是对初始化程序的正确使用,因为它只是猴子修补活动记录。我认为初始化程序是用于设置诸如配置之类的事物的状态。
猜你喜欢
  • 1970-01-01
  • 2013-07-10
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多