Rails4: мой атрибут hstore преобразуется в строку

У меня есть атрибут Hash в моей модели, который использует расширение Postgres hstore. Проблема в том, что этот атрибут конвертируется в String с помощью Rails4. Это не позволяет мне выполнять базовые операции, такие как .each или .map, для обработки моего хеш-атрибута.

При использовании консоли Rails Hash не конвертируется. Ввод:

@device.data
@device.data.class

Дает в консоли Rails:

{"city"=>"London", "owner_name"=>"John"}
Hash

А в самом приложении (с помощью навигатора):

"\"city\"=>\"London\","\"owner_name\"=>\"John\"
String

Есть ли у вас какие-либо идеи?

Обновлять:

Вот модель:

class Device < ActiveRecord::Base

  belongs_to :company
  has_many :records

  validates :name, presence: true
end

И соответствующий файл миграции:

class CreateDevices < ActiveRecord::Migration
  def change
    create_table :devices do |t|

      t.string :name
      t.hstore :data
      t.integer :company_id

      t.timestamps
    end

    add_index :devices, :name
  end
end

person htaidirt    schedule 04.12.2014    source источник
comment
Postgres hstore хранит ваш хеш как строку, это нормальное поведение. Rails создает serialization при загрузке столбца hstore   -  person Зелёный    schedule 04.12.2014
comment
Можешь выложить код модели.   -  person DickieBoy    schedule 04.12.2014
comment
@DickieBoy Я добавил модель и файл миграции. @Зеленый Но как я могу использовать хэш в этом случае, например @device.data['country']?   -  person htaidirt    schedule 04.12.2014
comment
Вроде все правильно делаешь.   -  person DickieBoy    schedule 04.12.2014
comment
Что вы имеете ввиду под навигатором?   -  person DickieBoy    schedule 04.12.2014


Ответы (1)


Попробуйте удалить папку tmp и перезапустить все серверы.

rm -rf tmp/*
person nakhli    schedule 06.01.2015