我正在使用Ruby on Rails 3.2.2,我想查看数据库表列的 presence 和数据类型(例如:String
,Integer
,...)给定模型类的列。也就是说,我在lib
目录中实现了一个Ruby模块,它带有一个传递模型类的方法(例如:Article
),我想验证某些相关数据库的某些条件表格列,不再是。
在我的模块方法中,我尝试使用column_exists?方法,如下所示
module MyModule
def check_column(model_class)
table = model_class.to_s.tableize
unless ActiveRecord::Base.connection.column_exists?(table.to_sym, :title)
raise ...
end
end
end
但没有成功:与column_exists?方法相关的(奇怪的)输出错误是这样的
Mysql2::Error: Table '<MY_APP_NAME>_development.<A_TABLE_NAME>/<ANOTHER_TABLE_NAME>/<ANOTHER_TABLE_NAME>' doesn't exist: SHOW FULL FIELDS FROM `<A_TABLE_NAME>/<ANOTHER_TABLE_NAME>/<ANOTHER_TABLE_NAME>`
在运行时正确检查数据库表列的状态和数据类型应该怎么做?
答案 0 :(得分:0)
您可以使用ActiveRecord::Base.connection
直接向DBM发送查询。
从那里你可以要求DBM描述一个特定的表,然后解析这些字段以找出有关数据类型的任何信息。