「ノート」列を含む新しいテーブルを作成しました。デフォルトはvarchar(255)と思いますが、この列をフィールドではなくテキスト領域にして、より多くのデータを許可したいと思います。私はActiveRecord :: Migrationファイルでこの変更を行うと思いますが、形式に興味があります。たとえば、varchar(255)をvarchar(1000)に変更するだけですか? (もしそうなら、フォーマットは何ですか?
def self.up
create_table :notes do |t|
t.string :note :varchar(1000)
end
それは正しいフォーマットですか?さらに、入力フィールドを複数行にするにはどうすればよいですか。これが簡単なものであれば申し訳ありませんが、プログラミングとRoRは初めてです。ありがとう。
'string'の代わりに 'text'タイプを使用できます。
def self.up
create_table :notes do |t|
t.text :note
end
end
'text'タイプを使用すると、タイプTEXTのデータベース列になります。 Varcharは通常、最大長が255に制限されています(MySQLでは、他のRDBMSにも同様の制限があります)。
Railsのフォームヘルパーを使用する場合、このフィールドにはtextareaが出力されます(タイプが 'text'であるため)。 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 を参照してください
このように制限オプションで長さを変更できます...
def self.up
change_column :notes, :note, :string, :limit => 1000
end
すでに多くのデータが保存されているので、
self.up
change_column :notes, :note, :text, :limit => nil
end
:limit => nilオプションを省略した場合、列のタイプはvarcharからtextに変更されますが、それでも最大長は255文字でした。