16

対応するモデルでアクセスしようとしているフォームにフィールドがありますが、モデル データベース テーブルの一部ではありません。これを処理する最善の方法は何ですか? これは悪い習慣ですか?

4

1 に答える 1

32

データベーステーブルにないモデル属性があってもかまいません。これらは仮想属性と呼ばれます。

'virtual_attribute'という属性を処理するとします。これがあなたがそれに対処する方法です:

あなたのフォームにいる間、あなたはこのようなものを持っているでしょう:

<%= f.check_box :virtual_attribute %>

モデルでは、これを行う必要があります。

attr_accessor :virtual_attribute

これは、その属性のセッターとゲッターを提供する組み込みのRubyメソッドであることに注意してください。

#getter
def virtual_attribute
  @virtual_attribute
end

#setter
def virtual_attribute=(value)
  @virtual_attribute = value
end
于 2012-06-16T02:33:48.763 に答える