Nouveauté de Sequel et de SQL en général, alors faites comme moi. J'utilise le plugin many_through_many
de Sequel et je récupère resources
qui sont indirectement associés avec tasks
à groups
, via une table de jointure groups_tasks
et une table de jointure groups_resources
. Puis, quand je fais une recherche task.resource
sur un ensemble de données Task
je reçois des objets de ressources en Ruby, comme ceci:Récupération d'enregistrements et manipulation en tant qu'objets Ruby
>>[#<Resource @values={:id=>2, :group_id=>nil, :display_name=>"some_name"}>, #<Resource @values={:id=>3, :group_id=>nil, :display_name=>"some_other_name"}>]
Maintenant, je veux être en mesure d'ajouter une nouvelle variable d'instance, schedule
à ces objets de ressources et y effectuer des travaux dans Ruby. Cependant, chaque fois que je fais une recherche task.resources
pour chaque tâche, Sequel apporte des ressources des objets pour ruby comme différents objets à chaque fois des ressources (ce qui est logique), en dépit d'être le même enregistrement dans la base de données:
>>
"T3"
#<Resource:0x007fd4ca0c6fd8>
#<Resource:0x007fd4ca0c6920>
#<Resource:0x007fd4ca0c60d8>
#<Resource:0x007fd4ca0c57a0>
"T1"
#<Resource:0x007fd4ca0a4c08>
#<Resource:0x007fd4ca097f58>
#<Resource:0x007fd4ca097b48>
"T2"
#<Resource:0x007fd4ca085ba0>
#<Resource:0x007fd4ca0850d8>
I Je voulais juste mettre un setter dans class Resource
et faire resource.schedule = Schedule.new
, mais comme ils sont tous différents objets, chaque ressource va avoir une tonne d'horaires différents. Quel est le moyen le plus simple de manipuler ces objets de ressources côté client, mais de conserver leurs associations de tâches que je interroge depuis le serveur?
Manipulez-les embaucher? D'une manière qui rend ces manipulations visibles à tous les objets qui ont la même rangée associée? –
@DaveNewton oui, exactement. Si je crée de nouveaux objets dans Ruby en interrogeant la même chose à partir de la ligne dans ma base de données, ce serait génial s'ils étaient le même objet dans Ruby-land. Là encore, je vais faire de nombreux hits redondants dans la base de données, alors peut-être que ce n'est pas la bonne façon de procéder? – Davigor
Pourquoi ont-ils besoin d'être le même objet? L'état de partage conduit généralement à des problèmes. Quelle est votre préoccupation sous-jacente? –