gpt4 book ai didi

ruby-on-rails-3 - 模型 gem

转载 作者:行者123 更新时间:2023-12-04 06:52:17 25 4
gpt4 key购买 nike

我创建了一个带有模型的 Gem(实际上,它是从主项目中提取出来的)以在我们平台上的项目之间共享。

我们有几十个模型,所以我没有一一要求它们,而是编写了以下代码:

Gem.find_files("my_gem/models/*.rb").each { |path| require path }

我访问 gem 文件中包含 my_gem 的项目之一并运行 rails c 我得到以下输出:

/Users/myuser/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.8/lib/active_record/dynamic_matchers.rb:50:in `method_missing': undefined method `has_attached_file' for #<Class:0x007fad4b93ccb8> (NoMethodError)

我的一个模型正在使用 gem 回形针,奇怪的是:

  1. 如果我删除上面声明的行以加载所有模型rails c 自动运行良好
  2. 如果我尝试只包含使用回形针的模型 需要
    “my_gem/models/paperclip_model”
    我收到同样的错误

然后我将我的 gem 更改为不加载任何模型,当我尝试从 Rails 控制台引用任何模型时,它说该类未加载,但随后我运行 Gem.find_files("my_gem/models/*.rb").each { |路径| require path require "my_gem/models/paperclip_model" '它们工作完美,我可以使用该模型。

你们中有人遇到过同样的问题吗?

最佳答案

似乎将 require 更改为 autoload 解决了问题

我更改了 Gem.find_files("my_gem/models/*.rb").each { |path|需要路径 }

对于

Gem.find_files("my_gem/models/*.rb").each do |f| 
filename = File.basename(f, '.*')
class_name_symbol = filename.classify.to_sym
autoload class_name_symbol, "my_gem/models/#{filename}"
end

现在它正在运行。

关于ruby-on-rails-3 - 模型 gem ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13349537/

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