ActiveRecord :: Base.connection.table_structure(“ <表名>”)的Rails控制台抛出错误

卡蒂基·坦娜(Kartikey Tanna)

我正在尝试通过以下命令访问表结构:

ActiveRecord::Base.connection.table_structure("projects")

控制台引发以下错误:

NoMethodError:为#<ActiveRecord :: ConnectionAdapters :: SQLite3Adapter:0x6559050>调用的受保护方法`table_structure'

我想知道Rails控制台是如何工作的,此错误背后的原因是什么?有什么方法可以通过Rails控制台访问表结构,而不是经常切换到Sqlite3来检查架构吗?

安德烈·德尼科(Andrey Deineko)

调用您想使用的方法:

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

返回与此类关联的表的列对象的数组。

column_names

以字符串的形式返回列名称的数组。

Project.columns
Project.column_names

请参阅文档中方法完整列表

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用ActiveRecord :: Base.connection的正确方法

来自分类Dev

ActiveRecord::Base.establish_connection 连接到错误的数据库

来自分类Dev

ActiveRecord :: Base.connection.execute的受影响的行

来自分类Dev

ActiveRecord :: Base.connection.execute(sql)。每个都不返回数据

来自分类Dev

使用ActiveRecord :: Base.connection返回哈希而不是数组

来自分类Dev

Rails ActiveRecord与多个表联接

来自分类Dev

ActiveRecord错误的table_name

来自分类Dev

扩展ActiveRecord :: Base

来自分类Dev

扩展ActiveRecord :: Base

来自分类Dev

覆盖ActiveRecord :: Base

来自分类Dev

为什么Rails 5使用ApplicationRecord而不是ActiveRecord :: Base?

来自分类Dev

ActiveRecord不使用覆盖的表名

来自分类Dev

如果表名中带有_,如何从Rails控制台访问表

来自分类Dev

ActiveRecord视图与表(在Rails 4中)

来自分类Dev

Ruby on Rails / ActiveRecord和表分区

来自分类Dev

使用ActiveRecord在Rails中正确联接表

来自分类Dev

Rails单表继承ActiveRecord :: SubclassNotFound

来自分类Dev

ActiveRecord表不存在错误

来自分类Dev

Rails服务器运行,但是Rails控制台抛出错误“尚未签出”

来自分类Dev

Dask read_sql_table 抛出错误 AttributeError: 'Connection' object has no attribute '_instantiate_plugins'

来自分类Dev

如何成功继承ActiveRecord :: Base?

来自分类Dev

activerecord -3.1.11出错,找不到表(ActiveRecord :: Statement无效)

来自分类Dev

Yii ActiveRecord和控制台命令不起作用

来自分类Dev

Ruby on Rails控制台导出表到Excel

来自分类Dev

Rails关联:通过控制台访问联接表(HABTM)

来自分类Dev

使用rails控制台以HABTM关系填充联接表

来自分类Dev

Rails:ActiveRecord::AssociationTypeMismatch 错误

来自分类Dev

为什么这个 activerecord find 查询会抛出错误?

来自分类Dev

ActiveRecord中的属性表

Related 相关文章

  1. 1

    使用ActiveRecord :: Base.connection的正确方法

  2. 2

    ActiveRecord::Base.establish_connection 连接到错误的数据库

  3. 3

    ActiveRecord :: Base.connection.execute的受影响的行

  4. 4

    ActiveRecord :: Base.connection.execute(sql)。每个都不返回数据

  5. 5

    使用ActiveRecord :: Base.connection返回哈希而不是数组

  6. 6

    Rails ActiveRecord与多个表联接

  7. 7

    ActiveRecord错误的table_name

  8. 8

    扩展ActiveRecord :: Base

  9. 9

    扩展ActiveRecord :: Base

  10. 10

    覆盖ActiveRecord :: Base

  11. 11

    为什么Rails 5使用ApplicationRecord而不是ActiveRecord :: Base?

  12. 12

    ActiveRecord不使用覆盖的表名

  13. 13

    如果表名中带有_,如何从Rails控制台访问表

  14. 14

    ActiveRecord视图与表(在Rails 4中)

  15. 15

    Ruby on Rails / ActiveRecord和表分区

  16. 16

    使用ActiveRecord在Rails中正确联接表

  17. 17

    Rails单表继承ActiveRecord :: SubclassNotFound

  18. 18

    ActiveRecord表不存在错误

  19. 19

    Rails服务器运行,但是Rails控制台抛出错误“尚未签出”

  20. 20

    Dask read_sql_table 抛出错误 AttributeError: 'Connection' object has no attribute '_instantiate_plugins'

  21. 21

    如何成功继承ActiveRecord :: Base?

  22. 22

    activerecord -3.1.11出错,找不到表(ActiveRecord :: Statement无效)

  23. 23

    Yii ActiveRecord和控制台命令不起作用

  24. 24

    Ruby on Rails控制台导出表到Excel

  25. 25

    Rails关联:通过控制台访问联接表(HABTM)

  26. 26

    使用rails控制台以HABTM关系填充联接表

  27. 27

    Rails:ActiveRecord::AssociationTypeMismatch 错误

  28. 28

    为什么这个 activerecord find 查询会抛出错误?

  29. 29

    ActiveRecord中的属性表

热门标签

归档