【问题标题】:Ruby activerecord with Postgresql adapter can't select OID带有 Postgresql 适配器的 Ruby activerecord 无法选择 OID
【发布时间】:2013-01-31 14:02:55
【问题描述】:

我是 Ruby 和 ActiveRecord 的新手,所以如果这是一个愚蠢的问题......对不起。

我有一个 Postgres 数据库表,其中包含路径名。我需要在特定路径上进行查找并获取 OID(该表定义为:set_default_oids = true)。问题是我可以添加一个 select("oid,path") 但我从来没有得到 OID。我确实得到了路径,但我需要 OID。

我假设有一些适配器选项或表类选项说:使用 OID,但我找不到它。

当我查看查找结果时,我可以查看 object_id,但这似乎是 ActiveRecord 内部的东西,与 OID 无关。使用 psql 时,我可以这样做:

db=# SELECT oid,path FROM path_table;

我看到了正确的 OID。所以我知道他们在那里......

有什么建议吗?

罗伯

【问题讨论】:

  • 如果您在 Rails 控制台中查看Model.columns.map(&:name),它是否提到了oid 列?如果你这样做Model.select('oid').map(&:oid) 会发生什么? Model 我的意思是无论你的表的模型包装器被称为什么。
  • 我刚刚发现我可以使用 connection.execute() 并得到它,但我仍然想看看是否有办法设置类或连接,这样我就不会必须使用“原始”连接。
  • 我试过了: PathTable.select("oid,path").where("path = '/data/tables/2008/05/13'").map(&:oid) 得到了:“17341”是正确的 OID,但它似乎忽略了选择的“路径”部分。
  • 并且,回答您的其他问题:如果我执行 PathTable.columns.map(&:name),则不会列出 oid。
  • 也许使用简单的SERIAL 字段而不是内部的oids 会更好?

标签: ruby postgresql activerecord


【解决方案1】:

我将改用 PG 界面,因为使用 ActiveRecord 似乎不容易让我看到 OID。

【讨论】:

    猜你喜欢
    • 2011-10-24
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多