Rails Преобразование YAML в базу данных в массив в контроллере

У меня есть массив целых чисел, который хранится в моей БД как yaml. Я ищу способ конвертировать yaml обратно в массив в моем контроллере.

Вот миграция:

class AddRandomExerciseArrayToUsers < ActiveRecord::Migration
 def change
 add_column :users, serialize :random_exercise_array, :text
 end
end

Вот как это выглядит в БД:

random_exercise_array: "---\n- 1\n- 2\n- 3\n- 5\n- 1\n- 0\n- 1\n- 2\n- 1\n- 4\n">

В приведенном выше примере, как я могу получить массив целых чисел следующим образом [1,2,3,5,1,0,1,2,1,4] обратно в мой контроллер?

Редактировать:

Соответствующий код контроллера:

def index 
 if current_user.bookmark2 == 0 && current_user.random_exercise_array.nil?
 exerciseArray = Array.new(10) 

 for i in 0..9
 exerciseArray[i] = rand(0..5)
 end

 current_user.random_exercise_array = exerciseArray
 current_user.save
 end 
end
1 ответ

Вы можете получить полезную информацию по этой ссылке (http://api.rubyonrails.org/classes/ActiveRecord/AttributeMethods/Serialization/ClassMethods.html)

Если у вас есть атрибут, который необходимо сохранить в базе данных в качестве объекта и получить в качестве одного и того же объекта, укажите этот атрибут с помощью этого метода, и он будет обрабатываться автоматически. Сериализация выполняется через YAML.

class AddRandomExerciseArrayToUsers < ActiveRecord::Migration
 def change
 add_column :resources, :random_exercise_array, :text
 end
end

затем выполните: rake db: migrate

class User < ActiveRecord::Base
 serialize :random_exercise_array #add this line to your user model
end

Если вы храните массив в БД, вы можете получить массив напрямую и не нужно обрабатывать его самостоятельно.

licensed under cc by-sa 3.0 with attribution.