如何在不使用模型常数的情况下在路线中使用模型?

时间:2019-01-07 07:12:07

标签: ruby-on-rails

我想在我的routes.rb文件中使用模型而不实际调用模型的常量。目的是在访问路由文件时不要使Rails检查数据库,因为在以下描述的未迁移服务器的边缘情况下,它会以某种方式引起意外的行为。

现在,我有一行代码使用该模型的常量,但是我只是在第一次迁移之前就将其注释掉了,并且可以正常工作。但是我觉得可能会有更好的做法,所以我想知道:还有其他方法可以使用模型中的方法而不在路由文件中使用模型的常量吗?

当前,我的路线文件如下:

Rails.application.routes.draw do
  # …
  get 'universal' => 'novels#edit', defaults: { id: Novel.fetch_universal.id }
end

尽管此文件在迁移后可以正常工作,但是必须注释掉具有模型名称常量Novel的行,然后才能迁移任何 new 数据库。如果未注释掉,Rails将在执行任何数据库操作之前尝试检查数据库中的小说表(甚至包括使用rake db:drop删除数据库),并会引发错误,指出找不到表“ novels”。 / p>

1 个答案:

答案 0 :(得分:1)

您可以尝试遵循我的看法,

{ id: (ActiveRecord::Base.connection.tables.include?('novels') ? Novel.fetch_universal.id : [] }

它应该工作,未经测试!