2014-12-04 2 views
1

Postgres hstore 확장을 사용하는 모델에 Hash 속성이 있습니다. 문제는이 속성이 Rails4에 의해 String으로 변환된다는 것입니다. 이렇게하면 내 해시 속성을 처리하기 위해 .each 또는 .map과 같은 기본 작업을 수행 할 수 없습니다.Rails4 : 내 hstore 속성이 문자열로 변환 중입니다.

레일 콘솔을 사용하면 해시가 변환되지 않습니다. 입력 :

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

을 그리고 응용 프로그램 자체에 (탐색기 사용) :

@device.data 
@device.data.class 

레일 콘솔에 제공합니다

"\"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 
+1

Postgres'hstore'는 해시를 문자열처럼 유지합니다. 이는 정상적인 동작입니다. 열이'hstore'로드 할 때 레일즈는''serialization' (http://en.wikipedia.org/wiki/Serialization)을 만듭니다. –

+0

모델 코드를 게시 할 수 있습니까? – DickieBoy

+0

@DickieBoy 모델 및 마이그레이션 파일을 추가했습니다. @ Зелёный 그러나이 경우 해시를 어떻게 사용할 수 있습니까? @ device.data [ 'country']'? – htaidirt

답변

-1

이 TMP 폴더를 삭제하고 모든 서버를 다시 시작하십시오 여기

모델이다.

rm -rf tmp/*