在连接之前定义续集模型

Lyn*_*ynn 10 ruby sequel

在我的(非Rails)应用程序中,我正在尝试定义一个续集模型:

class Foo < Sequel::Model
end
Run Code Online (Sandbox Code Playgroud)

当我运行我的应用程序时,我收到错误:

No database associated with Sequel::Model: 
have you called Sequel.connect or Sequel::Model.db= ? (Sequel::Error)
Run Code Online (Sandbox Code Playgroud)

事实上,我没有调用connect,因为'require Foo'在我的数据库代码运行之前发生.

当然,我可以切换一些东西,以便在数据库连接后完成需求,但还有其他选择吗?目前我在一个文件中拥有我所有应用程序的'require'语句,如果不必为这些模型类文件打破它,那将是很好的.

Jer*_*ans 9

根据设计,Sequel要求在模型类定义之前设置数据库连接,因为它在模型类创建时解析数据库模式.因此,您应该首先设置初始化代码以连接到数据库.

  • 我刚看过这个,我不得不对设计决定持不同意见.在加载包含续集模型的gem之前必须连接到数据库是很糟糕的. (13认同)
  • 只有在模型或 schema.rb 文件中有一个明确的架构定义才能做到这一点,我认为 activerecord 就是这样做的。 (2认同)