2016-03-03 16 views
8

Sono consapevole del fatto che nei binari possiamo usare un tipo di dati di testo per le colonne in mysql che vogliamo salvare hash o array, dove rails serializzano l'hash in formato yaml e salvarlo nella colonna.I binari supportano il tipo di dati mysql json

class A < ActiveRecord::Base 
    serialize :data, Hash 
end 

Tuttavia, se ho bisogno di eseguire qualche ricerca su questa colonna, devo caricare tutti i record e de-serializzare tutti gli hash, e utilizzare rubino per la ricerca all'interno dei hash. Quindi c'è un modo per dire a mysql di cercare all'interno degli hash e restituire i record corrispondenti? Penso che questo non è supportato con la normale serializzazione yaml in quanto è solo un testo, quindi i binari supportano il tipo di dati mysql json o qualsiasi altra soluzione a questo problema?

risposta

5

Sembra che Rails 5 supporti in modo nativo il tipo di dati JSON MySQL. C'è una richiesta pull qui #21110 che la descrive un po '.

E sembra che sarete in grado di aggiungere questo al tuo create_table o change_table:

create_table :json_data_type do |t| 
    t.json :settings 
end 
+0

come su Rails 4.2.x? – Tilo

+1

Sembra che non sia in 4.2: https://github.com/rails/rails/pull/21110#issuecomment-166488468 – jlongtine

Problemi correlati