次のように作成されたオブジェクトのインスタンスがあります。
Example.create(:attrib0 => {
:attrib1 => value,
:attrib2 => [
{:attrib3 => value},
{:attrib4 => value}
]
})
どうすればアクセスできます:attrib4
か?
次のように作成されたオブジェクトのインスタンスがあります。
Example.create(:attrib0 => {
:attrib1 => value,
:attrib2 => [
{:attrib3 => value},
{:attrib4 => value}
]
})
どうすればアクセスできます:attrib4
か?
モデルで使用する必要がserialize
あります。そうすれば、ハッシュを正しく返すことができます。
class SomeModel < ActiveRecord::Base
serialize :attrib0
end
次に、以下はハッシュを返す必要があります
hash = @model.attrib0
# => {:attrib1 => value, :attrib2 => [{:attrib3 => value}, {:attrib4 => value}]
# now to access attrib4 you need to get the attrib2 array,
# then grab attrib4 by its index:
hash[:attrib2][1]
# => {:attrib4 => value}
# or to get the value:
hash[:attrib2][1][:attrib4]
# => value
ただし、上記は非常に複雑で醜いものになる可能性があるため、代わりにこれらの属性用に別のモデルを作成することをお勧めしました。
Ruby の手法のみを使用:
h = {:attrib0 => {
:attrib1 => :value1,
:attrib2 => [
{:attrib3 => :value2},
{:attrib4 => :value3}
]
}}
p h[:attrib0][:attrib2].last[:attrib4] #=> :value3