Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在动态定义的类中设置表名-Rails 4_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

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

Ruby on rails 在动态定义的类中设置表名-Rails 4,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我使用的是一个远程数据库(SQL Server 2008),有一个动态类定义,其中我指向一个特定的表名,如下所示: Object.const_set('Foo', Class.new(MyRemoteDB)) do self.table_name = ENV['TABLE_NAME'] def self.go_wild ... end end 但当我尝试访问在动态生成的类中定义的任何方法时,Rails返回表并不存在 如果我用self.table_na

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

  Object.const_set('Foo', Class.new(MyRemoteDB)) do
    self.table_name = ENV['TABLE_NAME']
    def self.go_wild
      ...
    end
  end
但当我尝试访问在动态生成的类中定义的任何方法时,Rails返回表并不存在


如果我用
self.table_name
记录表名,我会得到类名的常规复数版本(例如,对于类名
Foo
,或者对于
FooBar
),而不是用
self.table_name
设置的值

这就是我定义动态类的方式。方法应该在lambda中定义,在
对象.常量集(…)
调用中:

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