モデルのコード内に属性アクセサー/リーダー/ライターが表示されることがあります。ビュー/コントローラコードから属性を更新できるようにするには、これらは必要ですか?Railsでattr_accessorが必要なのはなぜですか?
私は初心者ですので、基本的なアプリケーションについて実際に話しています。
モデルのコード内に属性アクセサー/リーダー/ライターが表示されることがあります。ビュー/コントローラコードから属性を更新できるようにするには、これらは必要ですか?Railsでattr_accessorが必要なのはなぜですか?
私は初心者ですので、基本的なアプリケーションについて実際に話しています。
attr_accessor
は、Rubyのコア機能であり、ゲッターとセッターメソッドでインスタンス変数を生成するために使用されます。基本的なRubyではその使用は決して必要ありません(それは便利です)。
ActiveRecordモデルの場合、データ列に対してActiveRecordによってゲッターとセッターが既に生成されています。 attr_accessor
は必要ではなく、望ましいです。
永続化する必要がない追加のインスタンスデータ(データベース列ではない)がある場合は、attr_accessor
を使用して、数行のコードを節約できます。
Railsコードで頻繁に見られ、attr_accessor
と混同されている同様の名前のattr_accessible
は、ActiveRecordモデル内での質量割り当てを制御する非推奨の方法です。 Rails 4はそれをそのままの形でサポートしていません。これはStrong Parametersに置き換えられました。これにより、より詳細な制御が可能になります。
attr_accessor
を宣言した場合は、virtual attribute
として使用できます。これは、基本的にデータベースに保持されていないモデルの属性です。
例の場合:User
モデルでattr_accessor :password
を宣言して、新しいユーザーフォームのフィールドとして使用できるようにします。対応するcreate
アクションでパスワードを受け取ったら、hashed_password
を派生させ、それをデータベースに保存し、指定されたpassword
を破棄することができます(これは要求の最後に自動的に行われます)。
一般に、attr_accessor
は、SQLテーブルの実際の列ではないモデルに何かを飾ることをお勧めします。 Rails 4かどうか。これにより、モデルの内容と持続する内容を明確に理解できます。