デイブが言ったように、あなたは間違った方向に進んでいます。
ActiveRecord は、データベース内の既存の列ごとにメソッドを作成します。たとえば、モデルに対応するテーブルに foobar 列がある場合、foobar
メソッドとfoobar=(value)
メソッドがあります。
新しいRailsアプリで新たに始める場合は、マイグレーションを介してスキーマを作成できますし、おそらく作成する必要があります.Railsに組み込まれているマイグレーションジェネレータをそのために使用し、必要に応じてマイグレーションファイルを微調整してrake db:migrate
.
Rails の外部でデータベースに変更を加えている場合は、ほとんどの場合、ActiveRecord を介して既にアクセスできます。
そうすればrake db:schema:dump
、データベースの列をすでに表示できるはずです。
スキーマ (既存の移行の一部ではない SQL を含む) のバックアップを確保したい場合は、 のconfig.active_record.schema_format = :sql
オプションの使用を検討してconfig/application.rb
ください。次に、 の代わりに、スキーマ作成 SQL がそのファイルにダンプされdb/schema.rb
ます。db/structure.sql
rake db:schema:dump
デイブの回答のコメントによると、属性を必須にしたいとも思っていました。これは、列を変更してnull不可にする移行を介して行うことができます。モデルに検証を追加して、それを要求することもできます。学習中で、それらを使用する必要がない場合は、 and を使用しないでattr_protected
くださいattr_accessible
。Rails 4 では一括代入セキュリティがなくなり、それらが必要なものと関係があると考えて混乱しています (いずれにせよ、代わりに強力なパラメーターを使用します。上記の質問に対する私のコメントを参照してください)。必要なフィールドは、通常、最初に DB 制限 (null 可能かどうか、および場合によっては制約/トリガー) によって処理され、次にサーバー側で ActiveRecord 検証を介して検証され、次にクライアント側で HTML/Javascript で処理されます。