[:status] は Ruby の [] メソッドを使用します。「def status」は、ActiveRecord 属性または仮想属性 (attr_reader や attr_accessor など) と間違えてはならないメソッドを定義します。ActiveRecord は [] メソッドをクラスに追加し、object[:attr_name] および object.attr_name (さらには object.attributes[:attr_name]) によってすべての (データベース) 属性にアクセスできるようにします。
これは、obj[:method] が実質的に obj.method と同じである fe Javascript の動作とは異なります。
編集: たとえば、任意の形式で使用する場合は、attr_accessor を使用できるはずです。
<%= form.input :status %>
フォームを送信すると、インスタンス変数 @status が設定されます。保存前または保存後に何かしたい場合は、before_save または after_save フックを呼び出すことができます。
class Campaign < ActiveRecord::Base
attr_accessible :status
attr_accessor :status
before_save :raise_status
def raise_status
raise @status
end
end
これにより、ステータスの値が送信された値でエラーがスローされます。
お役に立てれば。