我正在尝试通过以下命令访问表结构:
ActiveRecord::Base.connection.table_structure("projects")
控制台引发以下错误:
NoMethodError:为#<ActiveRecord :: ConnectionAdapters :: SQLite3Adapter:0x6559050>调用的受保护方法`table_structure'
我想知道Rails控制台是如何工作的,此错误背后的原因是什么?有什么方法可以通过Rails控制台访问表结构,而不是经常切换到Sqlite3来检查架构吗?
调用您想使用的方法:
ActiveRecord::Base.connection.send(:table_structure, "projects")
但我认为一个更好的选择将columns_hash
用于获取有关表结构的最详细信息:
获取表的列作为哈希,键是列名,值是列对象。
Project.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">
也有 columns
返回与此类关联的表的列对象的数组。
以字符串的形式返回列名称的数组。
Project.columns
Project.column_names
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句