ruby-on-rails - 如何在不使用模型常量的情况下在路线中使用模型?
问题描述
我想在我的routes.rb
文件中使用模型而不实际调用模型的常量。这样做的目的是不让 Rails 在访问路由文件时检查数据库,因为它会在下面描述的未迁移服务器的边缘情况下以某种方式导致意外行为。
目前,我有一行代码使用了模型的常量,但我只是在第一次迁移之前将其注释掉,它工作正常。但我觉得可能有更好的做法,所以我想知道:是否有其他方法可以使用模型中的方法而不使用路由文件中的模型常量?
目前,我的路线文件如下所示:
Rails.application.routes.draw do
# …
get 'universal' => 'novels#edit', defaults: { id: Novel.fetch_universal.id }
end
虽然此文件在迁移后可以正常工作,但Novel
必须先注释掉模型名称常量所在的行,然后才能迁移任何新数据库。如果没有注释掉,那么 rails 将在任何数据库操作之前尝试检查数据库中的小说表(甚至包括使用 删除数据库rake db:drop
),并且会抛出一个错误,即找不到表“小说”。
解决方案
您可以尝试以下我猜,
{ id: (ActiveRecord::Base.connection.tables.include?('novels') ? Novel.fetch_universal.id : [] }
它应该工作,未经测试!
推荐阅读
- ios - 是否有像文件应用程序中的操作列表弹出框的标准控件?
- php - 是否可以在 database.php 文件中使用 Session::get() 方法?
- mysql - its showing not valid at this position for this server version
- php - 将原始超链接转换为 img
- powerbi - Power BI - 查找匹配百分比(Bounty 100)之前和之后的假设分析
- linux - Bash:从一个目录的脚本中打开多个具有不同名称的文件
- c# - 记录来自 .Net 核心 Web api 客户端的请求/响应
- docker - Graylog 未在 kubernetes 上公开 Web 界面
- python-3.x - 如何从numpy数组中的一个值中减去一个值
- mysql - 当我尝试编译项目时,得到“jOOQ 代码生成工具出错”