一般来说是续集和SQL的新手,所以请耐心等待。我正在使用Sequel的many_through_many
插件,并通过resources
检索与tasks
到groups
间接关联的groups_tasks
连接表和groups_resources
连接表。然后,当我在task.resource
数据集上查询Task
时,我在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
,但由于它们是所有不同的对象,因此每个资源都会有大量不同的时间表。操作这些资源对象客户端的最直接的方法是什么,但维护我从服务器查询的任务关联?
答案 0 :(得分:0)
如果我正确理解您的问题,您需要检索Resource
个对象,然后操作名为schedule
的某个属性。我对Sequel不太熟悉,但查看文档似乎与ActiveRecord类似。
设置实例变量(我想在Resource类上使用attr_accessor :schedule
之类的东西)。
将记录存储在变量中,每次都使用相同的实例,而不是Sequel返回的新实例。