Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 轨道3=>;未定义的方法';数组';当我尝试rake db:migrate时_Arrays_Ruby On Rails 3_Scaffold_Dbmigrate - Fatal编程技术网

Arrays 轨道3=>;未定义的方法';数组';当我尝试rake db:migrate时

Arrays 轨道3=>;未定义的方法';数组';当我尝试rake db:migrate时,arrays,ruby-on-rails-3,scaffold,dbmigrate,Arrays,Ruby On Rails 3,Scaffold,Dbmigrate,这是我在这里的第一篇文章,所以放松点。我正在尝试在Rails 3.2.1中构建我的第一个应用程序。我正在尝试使用以下终端命令生成用于绘制的脚手架: rails generate scaffold Paint paint_family:string paint_hex:array paint_available:boolean paint_location:integer paint_quantity:integer paint_additional_info:text 但当我尝试迁移时

这是我在这里的第一篇文章,所以放松点。我正在尝试在Rails 3.2.1中构建我的第一个应用程序。我正在尝试使用以下终端命令生成用于绘制的脚手架:

rails generate scaffold Paint paint_family:string paint_hex:array paint_available:boolean     paint_location:integer paint_quantity:integer paint_additional_info:text
但当我尝试迁移时,会出现以下错误:

undefined method `array' for #<ActiveRecord::ConnectionAdapters::TableDefinition:0x007fbd8bdb1c58>
的未定义方法“array”#
以下是迁移记录:

  class CreatePaints < ActiveRecord::Migration
  def change
    create_table :paints do |t|
    t.string :paint_family
    t.array :paint_hex
    t.boolean :paint_available
    t.integer :paint_location
    t.integer :paint_quantity
    t.text :paint_additional_info

    t.timestamps
 end
 end
class CreatePaint
结束

我一辈子都搞不懂为什么会这样。但那是因为我不知道自己在做什么。任何建议/帮助都将不胜感激。

问题在于:

t.array :paint_hex
没有名为
array
的列类型。如果确实要保存数组,可以使用
string
text
,然后序列化该值

class Paint < ActiveRecord::Base
  serialize :paint_hex
end
class Paint

顺便说一句:对于rails应用程序来说,在所有属性名前面加上
paint\ucode>是一种非常少见的命名方案。

数组它不是一种有效的数据库类型。不能创建类型为array的列

有一些方法可以将数组存储在字段中。检查方法。
您必须声明类型为text的列,并在类中指定列序列化为Rails 4中类型为array

的对象,并且使用PostgreSQL您可以在DB中实际使用数组类型:

迁移:

class CreateSomething < ActiveRecord::Migration
  def change
    create_table :something do |t|
      t.string :some_array, array: true, default: []
      t.timestamps
    end
  end
end
class-CreateSomething
然后向上投票,选择正确答案。这就是我们对stackoverflow表示感谢的方式。。。