postgresql上的Activerecord迁移错误

时间:2015-06-01 09:52:16

标签: ruby-on-rails postgresql activerecord

我有一个错误,没有解释。

我的错误:

class AddColumnToReports < ActiveRecord::Migration
  def change
    add_reference :reports, :conjoncture_indice, index: true
    add_foreign_key :reports, :conjoncture_indices
  end
end

我的迁移:

class CreateConjonctureIndices < ActiveRecord::Migration
  def change
    create_table :conjoncture_indices do |t|
      t.date :date
      t.float :value

      t.timestamps null: false
    end
  end
end

我的创建表格迁移:

class ConjonctureIndice < ActiveRecord::Base
    has_many :reports
    by_star_field :date
end

我的模特:

  create_table "conjoncture_indices", force: :cascade do |t|
    t.date     "date"
    t.float    "value"
    t.datetime "created_at",                 null: false
    t.datetime "updated_at",                 null: false
  end

我的ConjonctureIndice shema.rb部分:

$contentTable=array();
function getNameProcess($id)
{
    $time1=microtime(true);
    if(empty($GLOBALS['contentTable']))
    {
        $baseClass = new MsDatabase();
        $query = "select CON_VALUE,CON_ID from content WHERE CON_CATEGORY = 'PRO_TITLE'";
        $result= $baseClass->query($query,WF_WORKFLOW_DB_NAME_MARKAZE);

        $GLOBALS['contentTable'] = array();
        foreach($result as $R) {
            if ($R['CON_VALUE'] != '') $GLOBALS['contentTable'][$R['CON_ID']] = $R['CON_VALUE'];
        }
    }

    $retval = 0;
    if (isset($GLOBALS['contentTable'][$id])) {
        $retval = $GLOBALS['contentTable'][$id];
    }

    $time2=microtime(true);
    $timeTotal=($time2-$time1);
    echo $timeTotal;

    return $retval;
}

我在我的项目中寻找“conjoncture_index”,但没有...我认为项目的旧版本使用“conjoncture_index”而不是“conjoncture_indice”,但所有出现都会被删除。

2 个答案:

答案 0 :(得分:5)

在rails中,迁移名称是复数,而模型名称是单数。所以模型名称应该是索引,但它不能是一个保留关键字,其复数转换为ConjunctureIndices。

注意 - 如果您仍然有疑问,那么您可以删除并重新创建数据库,但我怀疑命名约定是您的问题。

答案 1 :(得分:0)

好的,我发现了问题。我认为错误信息与以前相同,但他引用另一个名为&#34; confidence_indices&#34;的表。错误来自&#34; indice&#34;单词..当我删除它时我没有问题。