根据http://railscasts.com/episodes/345-hstore的建议,我补充道:
serialize :properties, ActiveRecord::Coders::Hstore
到我的模特。这允许我在视图中迭代键/值对(没有它,我得到一个未定义的方法`每个'用于String错误):
<% @item.properties.try(:each) do |key, value| %>
<%= key %>: <%= value %><br />
<% end %>
我设法通过明确地将其声明为文本字段来获取RailsAdmin中的hstore字段:
class Item < ActiveRecord::Base
attr_accessible :name, :properties, as: :admin
serialize :properties, ActiveRecord::Coders::Hstore
rails_admin do # without this block, properties gets ignored in RailsAdmin
edit do
field :name
field :properties, :text
end
end
end
如果我上面的序列化调用已停用,我可以按以下格式在RailsAdmin中设置哈希值:
"key1" => "value1", "key2" => "value2"
但是,当没有注释掉序列化调用时(为了使视图中的循环起作用),RailsAdmin在保存哈希时崩溃:
undefined method `map' for String
怎么办?
答案 0 :(得分:0)
我相信你可以做到这一点:
serialize :properties
这应该与each
方法一起使用
然后:属性将被识别为哈希,而不是字符串
HStore应该是可选的。
:属性应该是架构中的字符串
(我想当你设置HStore插件时 - 你把hstore类型改为字符串)