gpt4 book ai didi

ruby-on-rails - 在 Rails 应用程序中扩展哈希类

转载 作者:行者123 更新时间:2023-12-02 03:22:35 26 4
gpt4 key购买 nike

我有一个 Rails 应用程序,我需要扩展 Hash 模块来添加方法 -

class Hash
def delete_blank
delete_if{|k, v| v.nil? or (v.instance_of?(Hash) and v.delete_blank.empty?)}
end
end

我创建了一个名为 hash_extensions.rb 的文件,并将其放置在我的 lib 文件夹中,当然还使用 config/application.rb 中的以下行配置了自动加载路径

config.autoload_paths += %W(#{config.root}/lib) 

但是,当我在哈希上调用删除空白方法时,出现以下错误 -

undefined method `delete_blank' for #<Hash:0x000000081ceed8>\nDid you mean?  delete_if

除此之外,我还尝试将 require "hash_extensions" 放置在我调用 delete_blank 方法的文件顶部。

我在这里做错了什么,或者我可以避免扩展哈希以具有相同的功能吗?

最佳答案

您可以通过几种不同的方式解决此问题:

  1. 假设 hash_extensions.rb 位于 your_app/lib/extensions 下。 (最好将所有扩展存储在单独的文件夹中),要求 config/application.rb 中的所有扩展如下:

    Dir[File.join(Rails.root, "lib", "extensions", "*.rb")].each {|l| require l }
  2. hash_extensions.rb 移至 config/initializers 下,它应该会自动加载。

  3. your_app/app 下创建一个名为 libextensions 的文件夹,并将 hash_extensions.rb 移至其中,然后Rails 会负责加载它。

关于ruby-on-rails - 在 Rails 应用程序中扩展哈希类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43788109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com