138 votes

À l’aide de Rails sérialiser pour enregistrer le hachage à base de données

Je suis tenter de sauver un hachage mappage d’ID à un certain nombre de tentatives dans mon application rails. Ma migration vers la base de données pour tenir compte de cette nouvelle colonne :

Dans mon modèle que j’ai :

Mais lorsque j’utilise la console rails pour tester cette situation en faisant :

La sortie a la valeur false. Ce qui ne va pas ici ?

175voto

Benjamin Tan Points 6541

On ne va pas le type de colonne. Vous devez utiliser le texte au lieu de la chaîne. Par conséquent, la migration doit être :

Puis Rails seront bien convertir en YAML pour vous (et effectuer une sérialisation appropriée).

J’espère que cela aide !

75voto

Blair Anderson Points 587

Assurez-vous que votre colonne :text et pas :string

Migration:

class Migration0001
  def change
    add_column :users, :location_data, :text
  end
end

Votre Classe Devrait Ressembler À:

class User < ActiveRecord::Base
  serialize :location_data
end

Les Actions Disponibles Sont:

b = User.new
b.location_data = [1,2,{foot: 3, bart: "noodles"}]
b.save

Source: Rails Doc API

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X