Ответ 1
Вы можете хранить массивы и хэши с помощью объявления ActiveRecord serialize
:
class Comment < ActiveRecord::Base
serialize :stuff
end
comment = Comment.new # stuff: nil
comment.stuff = ['some', 'stuff', 'as array']
comment.save
comment.stuff # => ['some', 'stuff', 'as array']
Вы можете указать имя класса, к которому должен иметь тип объекта (в данном случае Array
). Это более ясно и немного безопаснее. Вам также не придется создавать массив при назначении первого значения, так как вы сможете добавить к существующему (пустому) массиву.
class Comment < ActiveRecord::Base
serialize :stuff, Array
end
comment = Comment.new # stuff: []
comment.stuff << 'some' << 'stuff' << 'as array'
Вы даже можете использовать опрятную версию под названием store: http://api.rubyonrails.org/classes/ActiveRecord/Store.html
Это должно обрабатывать ваш прецедент с использованием встроенного метода.