向rails和mysql中的特定列添加多个值的最佳方法

问题描述 投票:1回答:1

我需要在keywords table的键字段中添加Multi值。例如前端设计enter image description here

单击add按钮时在前面,只需添加到文本区域。单击save change时,会将值添加到db。

我的解决方案

  • keys的类型是Text。例如值
{data: { id: 1,
   keys: "Hello Ruby Java"
}
}
  • 在前面,请使用split(" ")将文本添加到列表中

我需要知道此解决方案是否最佳。有什么最好的办法吗?

注:

  • 我使用Rails 5和MySQL
  • 键可以具有任意数量的键

我阅读可以使用serialize :keys, Array,但我不知道在这种情况下是否正确。

mysql ruby-on-rails ruby-on-rails-5
1个回答
0
投票

您可以在数据库中使它成为数组字段,而无需在前端将其拆分。现在,这是一个文本字段,之间有空格。在问题的最后,您提到使用serialize :keys, Array。您在正确的路径上。

对于mysql用户:

迁移文件

class AddKeysToKeyword < ActiveRecord::Migration
  def change
    change_column :keywords, :keys, :text, default: [].to_yaml
  end
end

模型文件

class Keyword < ApplicationRecord
  serialize :keys, Array
end

我更喜欢使用postgresql,存储这种数据真的很容易。只是将其放在此处以供进一步参考,以及供使用postgres同类数据库的人们使用。

对于Postgres用户:

迁移文件

class ChangeKeysDataTypeToArray < ActiveRecord::Migration
  def change
    change_column :keywords, :keys, :text, array: true, default: []
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.