我正在使用 Ruby on Rails 3.2.2,我想检查给定模型类的数据库表列是否存在以及该列的数据类型(例如: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>`
我应该做什么才能在运行时正确检查数据库表列的存在和数据类型?