2011-07-05 9 views
2

フィールド名が「process_salary?」の「user」テーブルがあります。それは私に与えフィールド名に '?'

@user = User.create(params[:user]) 
if @user.process_salary? 
//some code here 
else 
//some code here 
end 

は、私は、ユーザーの新しいオブジェクトを作成し、process_salaryをチェックするブールデータ型は

NoMethodError: undefined method `process_salary?' for #<User:0xb6ac2f68> 

なぜこのエラーが発生したエラー、次のいましたか?列名を変更せずに回避することはできますか?

私はそれが最初の時間をクラッシュし、それの後に、それは疑問符がActiveRecordの中で特別な意味を持って適切に

答えて

5

を実行し、デバッガでそれを確認してください。フィールドが真であるかどうかをチェックするのに使用できます。あなたはそのような良い考えではなかったあなたのフィールド名の一部としてそれを使用しています。 @ user.process_salaryなら試してみることができますか?しかし、私は最終的にあなたのデータベース列を 'process_salary'と呼ぶように変更するのが最も簡単だと思います。

サイドノート: 'rails console'は、モデルで遊ぶのに本当に役立ちます。

+1

Rubyでは、「@ user.process_salary ??」は扱いにくくすることはできません(例えば、 '@ user.send(:" process_salary ?? ")') –

1

cellcortexが投稿したように、列名の末尾に疑問符がありますが、Railsでは扱いにくいです。

@user['process_salary?'] 

以上の冗長を::

@user.read_attribute['process_salary?'] 

することができます.nilを使用してゼロのためのコーステストのレガシーな理由のためにそこにそれを持っている必要があります場合は、次のように属性できるアクセスが行われる場合があります?

関連する問題