"val1", "2"=>"val2", "3"=>"val3", "4"=>"val4"} @page.update(hash: ha-6ren">
gpt4 book ai didi

ruby-on-rails - Rails - 如何将散列保存到数据库并在将其从数据库中拉出后将其用作散列(而不是将其拉出)

转载 作者:数据小太阳 更新时间:2023-10-29 07:25:32 26 4
gpt4 key购买 nike

如果我将哈希保存到数据库

hash_value = {"1"=>"val1", "2"=>"val2", "3"=>"val3", "4"=>"val4"}
@page.update(hash: hash_value)

然后尝试遍历 page 上散列的每个键页

hash = @page.hash 

<%= hash.each do |key, value| %>

<%= value %>

<% end %>

我收到错误 undefined method 'each' for #<String:0x007fdda1d8b568> .这个错误让我意识到它是作为字符串保存到数据库中的。

如何将它保存为散列,以便当我从数据库中提取它时,它是散列而不是字符串?做一些研究我发现 serialize但我不知道如何正确使用它。它是否用于更改数据库表以使该表中保存的所有值都是哈希值?如果是这样,在迁移文件中添加了什么来做到这一点?

    create_table :pages do |t|

t.timestamps null: false
t.text :title
t.text :content_top
t.text :content_bottom
t.text :hash

t.timestamps null: false
end

只是对如何将散列保存到数据库并将其作为散列调用感到困惑。

最佳答案

:pages 表上的 :hash 的列类型是文本,当您希望列存储哈希时,这是要使用的正确列类型。您现在还必须在页面模型上指明您希望序列化此列。像这样:

class Page < ActiveRecord::Base
serialize :hash

然后您可以尝试像这样测试您的新设置:

@page = Page.new
@page.hash = {"1"=>"val1", "2"=>"val2", "3"=>"val3", "4"=>"val4"}
@page.save

关于ruby-on-rails - Rails - 如何将散列保存到数据库并在将其从数据库中拉出后将其用作散列(而不是将其拉出),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35665266/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com