在动态定义的类中设置表名 - Rails 4

时间:2016-09-13 20:50:09

标签: ruby-on-rails ruby activerecord

我正在使用远程数据库(SQL Server 2008),并且有一个动态类定义,我指向一个特定的表名,如下所示:

self.table_name

但是当我尝试访问动态生成的类中定义的任何方法时,Rails返回表不存在

如果我使用foos记录表名,我会获得类名的常规复数版本(例如Foo用于类名foo_bars,或FooBar用于{ {1}})而不是我用self.table_name设置的val。

1 个答案:

答案 0 :(得分:1)

原来是我定义动态类的方式。方法应该在Object.const_set(...)调用中的lambda中定义:

Object.const_set('Foo', Class.new(MyRemoteDB){
  ...
  self.table_name = ENV['TABLE_NAME']
  ...
})