mysql - Ruby 中的动态变量名称(在 Rails 上)

标签 mysql ruby-on-rails ruby variables

我需要使用 Ruby on the Rails 框架将角色统计信息存储到 MySQL 数据库中。似乎我不能在不转换到 PostgreSQL 的情况下在我的数据库中使用数组,这是我目前无法做到的。所以,我认为动态变量名是关键,但我不确定如何创建它们。目前我的代码如下所示:

class CreateInventories < ActiveRecord::Migration
  def change
    create_table :inventories do |t|
      t.string :user_name
      t.string :char_name
      t.string :char_item1
      t.string :char_item2
      t.string :char_item3
      t.string :char_item4
      t.string :char_item5
      t.string :char_item6
      t.string :char_item7
      t.string :char_item8
      t.string :char_item9
      t.string :char_item10
      t.string :char_item11
      t.string :char_item12
      t.string :char_item13
      t.string :char_item14
      t.string :char_item15
      t.string :char_item16
      t.string :char_item17
      t.string :char_item18
      t.string :char_item19
      t.string :char_item20


      t.timestamps null: false
    end
  end
end

显然这很糟糕。任何人都可以告诉我一种整理它的方法,这样它就不会使用 20 行代码来创建真正应该只有一个变量的东西吗?

最佳答案

这是未经测试的,但它是动态生成字符串或符号的基础:

create_table :inventories do |t|
  t.string :user_name
  t.string :char_name

  20.times do |i|
    t.string "char_item#{ 1 + i }".to_sym
  end

  t.timestamps null: false
end

关于mysql - Ruby 中的动态变量名称(在 Rails 上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34361138/

相关文章:

c# - 将多个图像文件发送到 mySQL

mysql - 将 CAST 与 WHERE 结合使用

ruby-on-rails - 载波:从 ASCII-8BIT 到 UTF-8 的编码::UndefinedConversionError ("\xFF")

ruby-on-rails - Rspec 使用测试,Capybara 使用开发数据库

ruby-on-rails - Rubygem 神 : Time limit configuration for process

ruby-on-rails - 如何将一些参数传递给默认渲染方法?

php - mysql join 显示复制结果

mySQL 事件替代方案

ruby-on-rails - 测试时错误的 URI(不是 URI?) |规范

sql - rails : Custom function in where block