16

そのため、この php サイトを、Rails に切り替えることができない既存のデータベースに移行する作業を行っています。次の表があります:Quotesという名前の列がありますtype。このモデルを作成してタイプを設定しようとすると、次のエラーが表示されます。

ActiveRecord::SubclassNotFound (Invalid single-table inheritance type: HOME is not a subclass of Quotes)

継承が想定されていないため、継承すると考える理由がわかりません。私の作成方法は次のようになります。

quote = Quotes.create(
  agent_id: agent.id,
  client_id: client.id,
  type: 'HOME',
  status: 0,
  date_created: DateTime.now 
)

タイプをコメントアウトすると、すべて正常に動作します。しかし、タイプではエラーになります。

4

2 に答える 2

3

特にモデルの生成などの最初のプロセスで、コードの奥深くに潜在的な落とし穴があるのは嫌いです。予約語を別のものに変更し、後で必要になった場合に継承列を利用できるようにすることをお勧めします。よりクリーンなソリューションがここにリストされています-> 移行を使用してデータベースの列名を変更します

それは読みます;

  1. Execute $> rails generate migration ChangeColumnName ここで、ChangeColumnName は移行の名前です。これは任意の名前にすることができます。
  2. ここで、db/migrate/_change_column_name.rb で生成された移行ファイルを編集します。

    class ChangeColumnName < ActiveRecord::Migration
    def change
    rename_column :table_name, :old_column, :new_column
    end
    end
    
  3. $> rake db:migrate

コントローラとビュー ファイルを編集する必要があります。たとえば、モデル名が Product の場合、これらのファイルを編集する可能性があります。

  1. /app/views/products/_form.html.erb
  2. /app/views/products/show.html.erb
  3. /app/controllers/products_controller.erb
  4. /app/views/products/index.html.erb
于 2014-08-03T12:38:52.690 に答える