Mob*_*ord 24 ruby activerecord ruby-on-rails
我曾经ActiveRecord::Base.set_table_name
在动态创建的ActiveRecord类上设置我的表名.现在我需要知道如何在以后获得该值.api文档没有提及如何执行此操作.此外,我无法从ActiveRecord类名称派生表名,因为它们的键控方式与表名不同.
这是我正在做的更好的例子
table_klass = Class.new(ActiveRecord::Base)
ActiveRecord::Base.const_set(const_name,table_klass)
app = @app
table_klass.class_eval do
after_save do
@@channel.push self
end
set_table_name t.server_table
establish_connection(
:adapter => "mysql2",
:host => app.db_host,
:username => app.db_user,
:password => app.db_pass,
:database => app.db_name
)
end
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果const_name
= Test和数据库名称是Database,它应该创建一个ActiveRecord :: Base :: DatabaseTest类.但是当我调用table_name时,我得到了未定义的局部变量或方法.我需要在类上调用table_name吗?
更新:
我打电话给它instance.class.table_name
Tim*_*Tim 12
迟到了.
我使用了以下rails代码:
my_record = Record.id(0) # hypothetical code
table_name = my_record.class.table_name
Run Code Online (Sandbox Code Playgroud)
class User < ActiveRecord::Base
end
User.table_name
# 'users'
Run Code Online (Sandbox Code Playgroud)