24-02-2013, 12:47 PM
(Modification du message : 24-02-2013, 12:49 PM par Sephi-Chan.)
Avec Ruby on Rails, on peut écrire quelque chose comme :
Ça permet d'écrire quelque chose comme :
Le hash
Une fois de plus, ce n'est pas une solution que j'encourage, car ça pousse à faire des choses sales et potentiellement délicate à maintenir. Autant opter pour une solution propre (qui aura en plus l'avantage d'être trivial à optimiser). L'expérience du terrain montre qu'il y a des tas de raisons de ne pas le faire.
Et si on veut vraiment le faire, autant opter pour une base qui supporte nativement ce genre de choses. Parmi les bases SQL, PostgreSQL le permet (mais sans pouvoir requêter sur le contenu du JSON). Et toutes les bases orientées documents le permettent (tout en pouvant requêter sur le contenu du JSON).
class Building < ActiveRecord::Base
serialize :hourly_resources
end
Ça permet d'écrire quelque chose comme :
Building.create({
name: 'Gold mine',
level: 1,
hourly_resources: {
gold: +100,
energy: -60
}
})
Le hash
hourly_resources
est alors automatiquement sérialisé (en YAML) quand l'objet est enregistré, et automatiquement désérialisé quand on récupère l'objet.Une fois de plus, ce n'est pas une solution que j'encourage, car ça pousse à faire des choses sales et potentiellement délicate à maintenir. Autant opter pour une solution propre (qui aura en plus l'avantage d'être trivial à optimiser). L'expérience du terrain montre qu'il y a des tas de raisons de ne pas le faire.
Et si on veut vraiment le faire, autant opter pour une base qui supporte nativement ce genre de choses. Parmi les bases SQL, PostgreSQL le permet (mais sans pouvoir requêter sur le contenu du JSON). Et toutes les bases orientées documents le permettent (tout en pouvant requêter sur le contenu du JSON).