Rails 3.2 앱에는 모델명이 텍스트 열 :data
입니다. 내가 가지고있는 모델에서 :직렬화 된 데이터를 검색하는 방법은 무엇입니까?
class Model
serialize :data, Hash
end
이것은 정확히 data:{"attr1"=>"foo", "attr2"=>"bar"....}
의 형식으로 데이터를 저장합니다.
이것을 쇼보기에 표시하려면 <%= @model.data %>
을 수행하면 전체 해시가 렌더링됩니다.
하지만 특정 속성 만 렌더링해야한다면 어떻게해야합니까? 이것이 가능한가? 그들이 작동 할 수처럼 보였다
내가 시도한 몇 가지 접근 방법 : - undefined method 'attr1'
<%- @model.data[:attr1] %>
생성 -
<%= @model.data.attr1 %>
표시 아무것도
나는 뭔가를 놓치고 있습니까? . 모든 포인터 주셔서 감사합니다
doh! 그건 의미가 있습니다. 감사! HashWithIndifferentAccess에 대한 좋은 정보를 추천 해 주시겠습니까? 나의 수색에서 그것은 아주 잘 커버되지 않는다. 꽤 널리 사용 되었습니까, 아니면 더 이상 사용되지 않을 것입니까? 나는 구문의 용이함을 좋아하지만 높고 건조한 상태로 남고 싶지는 않다. –
이 클래스는 부모로서'Hash'를 가지고 있으며, 키 대신에 심볼을 사용할 수 있기 때문에 설명 할 내용이 많지 않다. 하지만이 클래스는 Rails에서 매우 광범위하게 사용됩니다. 더욱 더 : ActiveSupport는'HashWithIndifferentAccess' 인스턴스를 반환하기 위해'has_indifferent_access' 메소드를'Hash' 자체에 추가합니다. 여러분의 시각에'<% = params.class %> '를 넣고 내가 농담하지 않는다고 스스로 생각해보십시오. – jdoe