从 Rails 3 项目的 lib 目录中访问模型

2023-11-26

我在 lib 目录中有一个文件,它使用模型中定义的一些常量,例如:

class User < ActiveRecord::Base
   MAX_EMAIL_ADDRESS_LENGTH = 255
end

然后我在 lib/foo.rb 中

module Foo
  LONG_EMAIL_ADDRESS = "[email protected]".rjust(User::MAX_EMAIL_ADDRESS_LENGTH, "a")
end

由于找不到 User 类而失败。如何在 lib 上的该文件之前加载用户?

我通过将其放在我的 application.rb 中来加载该文件:

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

我知道这是一个老问题,但我刚刚遇到了同样的问题,经过一番搜索后,我找到了一个解决方案,所以我认为值得分享它。

我想在 /lib 目录中的一个必需文件中使用模型“Foo”。首先,我这样做了,但没有成功:

# in my rake file
task :foo_task do
  require /some_path/lib/bar.rb
end

# in /lib/bar.rb
puts "Foo = #{Foo.count} "

# => uninitialized constant Foo

经过一番搜索,我发现要访问库文件中的模型,我需要在任务中指定环境。所以我只是将其添加到我的任务声明中:

task :foo_task => [:environment] do

现在,当我调用我的任务时,它会正确地输入 Foo 的数量:

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

从 Rails 3 项目的 lib 目录中访问模型 的相关文章

  • Rails 4、omniauth-facebook、rack-cors、Heroku 的 CORS 问题

    Summary 我有 CORS 问题 我正在尝试使用 Rails API 从 React 应用程序向 Facebook 进行身份验证 我的应用程序在 localhost 8080 上运行 我的 api 在 Heroku 上运行 我可以登录
  • 如何设计销毁会话并从控制器注销?

    设计销毁会话并从控制器注销 if something is not kosher 1 log this event 2 send notice redirect to destroy user session path and return
  • Rails ActiveRecord 按日期将结果分组到子集合中

    我正在尝试在 Rails 3 1 中执行 ActiveRecord 查询 其中我将结果排序到分组项目的子集合中 在本例中按日期分组 我认为我的代码可以最好地解释它 这是我的方法 它有效 但发出 4 个查询才能完成工作 这样做似乎效率不太高
  • Rails 可安装引擎的 prepend_view_path

    一方面 我有一个可安装的发动机 比如说前轮 前面包含我的资产和几页 它与 MainApp 隔离 我不想让它触及主应用程序 另一方面 我希望我的 MainApp 使用布局和部分前端 所以我这样设置布局 class ApplicationCon
  • 用于将唯一项插入数组的 Ruby 条件

    我知道如果你有一个array并将其引用为array uniq它将返回 没有任何重复项 然而 在本例中 它是一个对象数组 这是正确的 Ruby 语言吗 我希望每个电话都进入 calls数组除非call from与数组中已存在的 call fo
  • Rails cron 每当捆绑:命令未找到

    我尝试使用 每当 每天执行一次耙子任务 我收到这个错误 bin bash bundle command not found home app rvm rubies ruby 1 9 2 p180 lib ruby site ruby 1 9
  • ruby 无法复制 Fixnum

    我有一些这样的代码 ssh files id rsa pub id rsa ssh files each with index do item index ssh files index generate ssh path creator
  • 使用 gem 添加辅助方法

    我找到了很多有关添加表单辅助方法的信息 请参阅我的其他问题之一 但我找不到有关添加辅助方法的任何信息 就好像它们是在application helper rb 我尝试过复制application helper rb从 Rails 应用程序到
  • 配置 session_store.rb 来处理登台和生产?

    我的 Rails 3 1rc6 应用程序上有一个使用子域的暂存和生产环境 我为这些环境购买并配置了不同的域名 因为默认的 some something herokuapp com 不能很好地与子域配合 当我将 session store r
  • 在environment.rb中设置的常量在开发模式下消失

    了解 Rails 缓存如何工作的人可以真正帮助我 这是嵌套在 Rails Initializer run 块内的代码 config after initialize do SomeClass const set SOME CONST SOM
  • 退出无法在 Heroku 上工作 - 使用 Devise gem 和 Rails 4

    我刚刚对使用 Devise 进行身份验证的 Rails 4 应用程序进行了初始部署到 Heroku 注销可以在本地进行 但 Heroku 返回错误 您正在查找的页面不存在 并且不会注销用户 根据 Heroku 日志和 Google SO 搜
  • 安装heroku toolbelt后出现Ruby错误

    我正在 win 7 32 位系统上使用 Heroku 但我没有管理员权限 我已经下载并安装了heroku工具带如下http community webfaction com questions 11803 heroku toolbelt h
  • ActiveStorage::FileNotFoundError 但文件确实存在

    我正在开发这个 Rails 6 0 21 应用程序 ruby 2 5 5 并使用 puma 3 12 2 作为开发 Web 服务器和具有本地磁盘服务的 ActiveStorage 我的应用程序时不时地出错ActiveStorage File
  • Twitter Bootstrap Modal 无法在 Rails 中工作

    我还很新Rails and to twitter bootstrap 我正在研究模态 但我收到了 NoMethodError 未定义的方法 渲染 当我删除 代码来自my release js erb页面 它消失但没有窗口出现 另外 还有错误
  • ActiveRecord 和关联排序

    我有一个像这样的简单 AR 关联 Question has many answers Answer belongs to question with question id int 11 NOT NULL is accepted tinyi
  • 哈米尔评论结束

    我是哈米尔新手 这让我很困惑 我不喜欢删除可以注释掉的代码 但我不知道如何在 haml 中正确结束注释 这是一个代码片段 field f label member id br f text field member id field f l
  • Rails apns 用于向 Apple ipad 推送通知 - 使用哪个 gem?

    我希望从 Rails 3 0 3 应用程序向苹果推送通知 我发现了各种 apns ish 宝石 包括 apns on rails 其中一些似乎有点旧 1 或 2 年 并且非常不清楚 2012 年使用的 当前 是什么 根据我的标准 您能推荐使
  • 通过sprocket动态渲染sass文件

    我想从助手那里渲染一些变量 scss erb模板使用了image url 萨斯函数 template scss erb background image image url 到目前为止 ERB 部分很简单 利用这个堆栈溢出答案 https
  • Heroku 带宽和空间

    Heroku 对于免费应用程序支持多少流量带宽和磁盘空间 Heroku 免费版有一个 5 MB 的数据库和 1 个 dyno dyno 是运行并响应请求的应用程序的实例 此外 您的 slug 的大小有 100 MB 的限制 这包括您使用的所
  • 为什么这段 Ruby 代码无法写入日志文件?

    一旦脚本被守护 记录器就无法再写入文件 那么我应该如何以及何时初始化日志呢 require rubygems require daemons require logging def create new logger logger Logg

随机推荐