我试图通过以下命令访问表结构:
ActiveRecord::Base.connection.table_structure("projects")
控制台抛出以下错误:
NoMethodError:受保护的方法`table_structure'调用#< ActiveRecord的:: ConnectionAdapters :: SQLite3Adapter:0x6559050>
我想知道Rails控制台是如何工作的,这个错误背后的原因是什么?有没有办法通过Rails控制台访问表结构,而不是经常切换到Sqlite3来检查架构?
答案 0 :(得分:2)
要调用您想要的方法,请执行以下操作:
Project.columns_hash
但我认为更好的选择是使用columns_hash
获取有关表结构的最详细信息:
获取表的列作为哈希,键是列名值 列对象。
id
用法:说,您想获取有关Project.columns_hash['id']
#=> #<ActiveRecord::ConnectionAdapters::PostgreSQLColumn:0x007fda9e48ce90
# @array=false,
# @cast_type=#<ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Integer:0x007fda9bda2e88 @limit=nil, @precision=nil, @range=-2147483648...2147483648, @scale=nil>,
# @default=nil,
# @default_function="nextval('users_id_seq'::regclass)",
# @name="id",
# @null=false,
# @sql_type="integer">
列的信息:
Project.columns
Project.column_names
还有columns
返回与此关联的表的列对象数组 类。
以字符串形式返回列名数组。
{{1}}
答案 1 :(得分:1)
只需输入型号名称
即可直接获取结构在你的情况下
Project
这将返回如下内容:
class Project < ActiveRecord::Base {
:id => :integer,
:name => :string,
:created_at => :datetime,
:updated_at => :datetime
}