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
Postgres'hstore'는 해시를 문자열처럼 유지합니다. 이는 정상적인 동작입니다. 열이'hstore'로드 할 때 레일즈는''serialization' (http://en.wikipedia.org/wiki/Serialization)을 만듭니다. –
모델 코드를 게시 할 수 있습니까? – DickieBoy
@DickieBoy 모델 및 마이그레이션 파일을 추가했습니다. @ Зелёный 그러나이 경우 해시를 어떻게 사용할 수 있습니까? @ device.data [ 'country']'? – htaidirt