В Rails 2.3.6 я храню некоторые сериализованные данные в поле базы данных.
Мое поле "feed_event.data" в моей базе данных хранится в виде текста и (например) равно:
{:post=>{:pic=>"http://s3.amazonaws.com/criticalcity/datas/3524/big_thumb/send-a-letter.jpg", :name=>"Un’istruzione perfetta", :id=>1995, :authors=>"Delilah"}, :user=>{:pic=>"http://s3.amazonaws.com/criticalcity/avatars/537/thumb/DSCN2744.JPG", :name=>"Luci!", :id=>537}}
Теперь мне нужно вывести это поле в виде строки (точно так же, как в базе данных), но когда я спрашиваю:
puts feed_event.data
выводит:
postpichttp://s3.amazonaws.com/criticalcity/datas/3524/big_thumb/send-a-letter.jpgnameUn’istruzione perfettaid1995authorsDelilahuserpichttp://s3.amazonaws.com/criticalcity/avatars/537/thumb/DSCN2744.JPGnameLuci!
Почему?Как я могу вывести его в виде строки yaml?
ОБНОВЛЕНИЕ
Чтобы создать его, у меня есть это в моей модели FeedEvent:
class FeedEvent < ActiveRecord::Base
has_many :user_feed_events, :dependent => :destroy
has_many :users, :through => :user_feed_events
serialize :data
end
И чтобы создать новый элемент FeedEvent, я делаю:
feed = FeedEvent.create(:event_type => "comment #{commentable_type}", :type_id => id, :data => {:user => {:id => user.id, :name => user.name, :pic => user.avatar.url(:thumb)}, :comment => {:id => id, :body => body, :commentable_id => commentable_id, :commentable_type => :commentable_type, :commentable_name => commentable.name}})
UPDATE # 2
, следуя подсказке nzifnab, я использовал метод .to_yaml, но какой Railsвыходы в этом случае:
data: "--- \n:post: \n :pic: http://s3.amazonaws.com/criticalcity/datas/3524/big_thumb/send-a-letter.jpg\n :authors: Delilah\n :name: \"Un\\xE2\\x80\\x99istruzione perfetta\"\n :id: 1995\n:user: \n :pic: http://s3.amazonaws.com/criticalcity/avatars/537/thumb/DSCN2744.JPG\n :name: Luci!\n :id: 537\n"
Также комментирование «serialize: data» в модели выводит то же самое.
Спасибо, Аугусто