【问题标题】:Can you get database id from an object's object_id in Rails?你可以从 Rails 中对象的 object_id 获取数据库 id 吗?
【发布时间】:2015-05-31 00:13:26
【问题描述】:

这是我的问题:我有一个 Rails 项目,有两个模型,People 和 Credits,一个人有很多 Credits。我只能访问前端。我无权访问源代码、控制台或数据库,但我可以看到人员列表和制作人员列表。

人的桌子看起来像: 1 | John | Doe 是 id、first 和 last name 列。

学分表如下所示: 1 | #<Person:0x0000000591aaa0>,这是它所属的人的信用 ID 和活动记录对象 ID(对吗?)。

有没有办法从这个人的对象 id 中获取数据库 id?

【问题讨论】:

  • 如果您无法访问后端,那么获取 id 会有什么帮助?此外,要回答您的问题,不,您无法从 object_id 确定这一点,每个页面加载都会有所不同。
  • Object_id 在创建新对象时分配,在修改对象时不会更改。更重要的是,您可以从单个 rdb 行创建两个对象,它们将具有不同的 object_id。因此,简单的含义是,除了 object_id 之外,您无法从 object_id 获取任何类型的数据。除此之外,它是什么样的任务?你想破解 sbs 网站吗?
  • 不,没有黑客行为。只是我继承的一个项目,我正在尝试为其重新创建数据库。 @KyleDecot,如果我能得到这个人的 id,那么我可以将学分与正确的人联系起来。
  • 您继承了项目,但没有访问代码或数据库?然后你应该告诉所有者,他正在寻找一个全新的项目,因为你必须从头开始编写它。从学分表来看,他/她应该很高兴。但数据库不可检索。

标签: ruby-on-rails activerecord objectid


【解决方案1】:

简单的回答:不,你不能,抱歉。

稍微完整的答案:

数据库 id 和对象 id 完全不相关。

object_id 是 ruby​​ 对特定实例(即对象)的引用。而id 是数据库表单行的主键值。

为了说明问题:您可以实例化五个 Person 类的对象 - 每个对象都与 people 表的第一行具有相同的数据,并且每个对象都有自己的 object_id 但它们会对于数据库id,它们都具有相同的值。

因此 - 遗憾的是,您不能使用 object_id 作为对 id 的引用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    相关资源
    最近更新 更多