检索记录并将它们作为 Ruby 个对象进行操作

Retrieving records and manipulating them as Ruby objects

Sequel 和 SQL 总体上是新手,请多多包涵。我正在使用 Sequel 的 many_through_many 插件,我通过 groups_tasks 检索与特定 tasks 间接关联的 resources加入 table 和 groups_resources 加入 table。然后,当我在 Task 数据集上查询 task.resource 时,我在 Ruby 中获得资源对象,如下所示:

>>[#<Resource @values={:id=>2, :group_id=>nil, :display_name=>"some_name"}>, #<Resource @values={:id=>3, :group_id=>nil, :display_name=>"some_other_name"}>]

现在,我希望能够向这些资源对象添加一个新的实例变量 schedule,并在 Ruby 中对其进行处理。但是,每次我为每个任务查询 task.resources 时,Sequel 每次都会将资源对象作为 不同的 资源对象带入 ruby(这使得感觉),尽管在数据库中是相同的记录:

>>
"T3"
#<Resource:0x007fd4ca0c6fd8>
#<Resource:0x007fd4ca0c6920>
#<Resource:0x007fd4ca0c60d8>
#<Resource:0x007fd4ca0c57a0>


"T1"
#<Resource:0x007fd4ca0a4c08>
#<Resource:0x007fd4ca097f58>
#<Resource:0x007fd4ca097b48>


"T2"
#<Resource:0x007fd4ca085ba0>
#<Resource:0x007fd4ca0850d8>

我本来想在 class Resource 中放一个 setter 然后做 resource.schedule = Schedule.new,但是因为它们都是不同的对象,每个资源都会有很多不同的时间表。在客户端操作这些资源对象的最直接方法是什么,但要维护我从服务器查询的任务关联?

如果我对你的问题的理解正确,你想要检索 Resource 个对象,然后操作一些名为 schedule 的属性。我对 Sequel 不是很熟悉,但查看文档它似乎与 ActiveRecord 类似。

  1. 设置您的实例变量(我想象在资源 class 上使用类似 attr_accessor :schedule 的东西)。

  2. 将记录存储在变量中,您每次都将使用相同的实例,而不是新实例 Sequel returns.