通常對續集和SQL不熟悉,請耐心等待。我正在使用Sequel的many_through_many
插件,並且我檢索resources
,它們與特定的tasks
到groups
間接關聯,通過groups_tasks
連接表和groups_resources
連接表。後來,當我在一個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
每個任務,續集帶來的資源對象,以紅寶石爲不同資源的每個時間(這是有道理的)對象,儘管是在數據庫中相同的記錄:
>>
"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
,但由於它們都是不同的對象,每個資源都會有很多不同的時間表。什麼是操縱這些資源對象客戶端最直接的方式,但維護從服務器查詢的任務關聯?
操縱他們聘請?通過某種方式使這些操作對持有相同關聯行的所有對象可見? –
@DaveNewton是的,確切地說。如果我在Ruby中通過查詢數據庫中的行來創建新對象,那麼如果它們在Ruby-land中是同一個對象,那就太好了。然後再一次,我會在數據庫中做很多重複的命中,所以這可能不是正確的方法嗎? – Davigor
爲什麼他們需要成爲同一個對象?共享狀態通常只會導致問題。你最關心的是什麼? –