質問

私はコラム「ノート」を含む新しいテーブルを作成しました。デフォルトでは、私は信じているVARCHAR(255)ですが、私はこの列がフィールド対テキスト領域であると、より多くのデータを許可することを望みます。私はActiveRecordの::移行ファイルでこの変更を行うだろうと想像しますが、私は形式になど興味があります。私は単に、たとえばVARCHAR(1000)にはvarchar(255)を変更しますか? (そのフォーマットするものですか?

def self.up
    create_table :notes do |t|
      t.string :note :varchar(1000)
    end

は、適切なフォーマットということですか?さらに、どのように私は、入力フィールドが複数行であることを得るのです。申し訳ありませんが、これは簡単なものですが、私はプログラミングやRoRのに新しいです場合。ありがとうございました。

役に立ちましたか?

解決

あなたは、単に代わりに「文字列」の「テキスト」タイプを使用することができます。

def self.up
  create_table :notes do |t|
    t.text :note
  end
end

「テキスト」タイプを使用すると、TEXT型のデータベース列になります。 VARCHARは、通常、(MySQLでは、他のRDBMSは、同様の限界を有する)255の最大長さに制限されます。

あなたが使用している場合は(テキスト 『

Railsのそれは型であるため)フォームヘルパー、のテキストエリアは、このフィールドに出力されます』。 TEXTAREA 複数行入力を受け付けるフォーム要素である

編集:あなたはすでにCREATE_TABLEを移行した場合は、列の型を変更するには、新しい移行を作成することができます:

def self.up
  change_column :notes, :note, :text
end

他のヒント

正しい形式は次のようになり

t.string :note, :limit => 1000

あなたが256文字より長いのvarcharをサポートしてMySQLの(またはいずれかのデータベース)のバージョンを使用していることを確認します。

あなたは大規模なテキストブロックを使用する場合、それは次のようになります。

t.text :note

http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdaptersを参照してください。 /TableDefinition.html の詳細については、

あなたはようlimitオプションで長さを変更することができます...

def self.up
  change_column :notes, :note, :string, :limit => 1000
end
私は多くのデータが既に保存されていたので

私は

使用しました
self.up
  change_column :notes, :note, :text, :limit => nil
end
私はオフのままにしておくと、

:制限=> nilのオプションを、列タイプがテキストにvarchar型から変更するだろうが、それはまだ255文字の最大長を持っていた。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top