0

Rails 3 を使用して (これが Rails 2.x で異なるかどうかは確認していません)、ジェネレーターを使用してモデルを作成する場合、たとえば:

rails generate model Person first_name:string last_name:string

作成する Person モデル クラスで first_name または last_name 属性を宣言しません。つまり、移行によりDBにフィールドが作成され、動的言語マジックにより実行時にそれらを設定できます。ただし、モデルクラスは、モデルで使用できる属性についての一種の「ドキュメント」であると考えています。したがって、ジェネレーターがそれらを追加しないのは奇妙です。

私は追加しています:

attr_accessor :first_name, :last_name

私のモデルクラスに。またはさらに良いのは、attr_accessibleです。ただし、それでも、データ型が何であるかは明確ではありません。

他の人の考えがどうなっているのか、私はただ興味があります:

  1. ジェネレーターがデフォルトでこれを行わないのはなぜですか?
  2. アクセサを自分で追加しますか? なぜですか、そうでないのですか?
  3. おまけ: どういうわけかデータ型を指定できますか?

更新: attr_accessor は忘れてください。これが意味をなさない理由がわかります。代わりに attr_accessible を追加する必要があるとしましょう。それでも、上記の質問に対する人々の考えが欲しいです。

4

1 に答える 1

0

モデル属性に追加しないでくださいattr_accessor。意図した機能が損なわれます。 は問題なく、一般的に推奨されますが、一括割り当て保護の目的attr_accessibleでホワイトリストに登録する場合にのみ必要ですゲッター/セッターが機能するために、モデルに何も追加する必要はありません。ActiveRecord は、データベース スキーマを調べることでこれを行います。

モデルに「ドキュメント」が必要な場合は、フィールド情報をモデル/フィクスチャ/テスト/スペックの上部にあるコメントとして自動生成するannotate gem を確認してください。

于 2013-01-25T14:55:17.947 に答える