1

私のローカルマシンでは、MySQLを使用してRailsアプリケーションを開発しますが、デプロイ時にはPostgreSQLを使用するHerokuを使用しています。私は新しいデータ型を作成する必要があります。具体的にはlongtextとしたいので、いずれかのデータベースで別の列型にマップする必要があります。アクティブレコードにカスタム列データ型を追加する

私はこれを探していました。私の基本的な考え方は、ActiveRecord :: ConnectionAdapters :: * SQLアダプタの内部にあるハッシュをオーバーライドする必要があるということですが、ここでは豊富な知識を参考にして、これが良いアプローチであるかどうかを確認しました可能であれば、それを行う方法についての指針)、あるいは別の方法で迅速な勝利があるかどうかを確認してください。

現在、データ型が "string"で、データ型が長すぎるため挿入に失敗しています。 MySQLとPgSQLの両方で同じ機能が必要ですが、無制限のテキストBLOB列型を提供する共通のデータ型がないようです。

私は、このアプリケーションを両方のデータベーステクノロジで正しく(移行して)動作させたいと考えています。

非常に高く評価されています。

答えて

0

SQLは、実際の答えですが、私は本当にRDBMS特定のRails migraを行うには、より具体的な方法を探していました。 。その理由は、私のアプリケーションがPostgreSQLとMySQLの両方で動作できるという事実を維持したいからです。

class AddLongtextToPostgresql < ActiveRecord::Migration 
    def self.up 
    case ActiveRecord::Base.connection.adapter_name 
    when 'PostgreSQL' 
     execute "CREATE DOMAIN longtext as text" 
     execute "ALTER TABLE chapters ALTER COLUMN html TYPE longtext" 
     execute "ALTER TABLE chapters ALTER COLUMN body TYPE longtext" 
    else 
     puts "This migration is not supported on this platform." 
    end 
    end 

    def self.down 
    end 
end 

これは効果的に私が探していたものです。

3

あなたのdevマシンにPostgreSQLをインストールしないのはなぜですか?それをダウンロードして、「OK」を数回クリックして起動してください。それはロケット科学ではありません:-)

http://www.postgresql.org/download/

PostgreSQLは、それはあなたの想像力次第です、あなたが欲しいものを作成することができ、データ型に制限はありません。

CREATE DOMAIN(簡単なもののみ)フランクは述べ

CREATE TYPE(無制限)

+0

互換性がデータベーステクノロジ間で確実に動作するようにしたいと思います。私はProductionでPGSQLを実行しているので、必要に応じて何かにフォールバックすることができます。 MySQLは私が一番よく知っているものです。 –

+0

また、Heroku(無料)を介してPostgreSQLコンソールでコマンドを実行する能力は(私が間違っていない限り)持っていません。 –

+0

PostgreSQLコンソールでHerokuにアクセスすることはできませんが、マイグレーション中に任意のSQLを置くことができます。 –

関連する問題