2011-07-18 9 views
1

私は愛を使用して愛する?たとえば、 'animals'テーブルの 'alive?'のようなブール値フィールドの場合非常に明白です。 どこで定義しますか?テーブルの移行を作成するときにdbフィールドに名前を付けますか?そうは思いません。 それはbooleanフィールドのために自動的ですか、またはdef aliveのような動物のためのアクティブなレコードモデルクラスに少しのメソッドがありますか?生きていればtrue、そうでなければfalse false end?Rubyでは、 '?'を使用しています。 - dbまたはモデルメソッド?

答えて

6

Railsは、モデル内のフィールドごとに?で終わるメソッドを自動的に生成します。 いくつかの例:この動作はActiveRecordの中のすべてのboolean型のフィールドに自動的に行われ

class Animal 
    def young? 
    created_at > 1.day.ago 
    end 
end 
1

Animal #=> Animal(id: integer, alive: boolean, name: string) 
a = Animal.new 

a.alive #=> nil 
a.alive? #=> false 
a.alive = true 
a.alive? #=> true 

a.name #=> nil 
a.name? #=> false 
a.name = "Giraffe" 
a.name? #=> true 

はまた、あなたが簡単に独自の?メソッドを定義することができることに注意してください。

余計なことがありませんが、私はis_の接頭辞を持つブールフィールドに名前を付けたいと思います。 is_aliveis_alive?です。

+0

コードを共有する際には、個人的な基準がありますが、すべてのユーザーが使用し維持するのは悪夢です。 –

+0

RubyとRails自体から直接借用しました。 'is_a?'、 'is_missing?'、 'is_eos?'など –

+0

はい、ルビーのメソッドネーミングと似ています。彼らはまた、同じスタンダードとフォーマットに従います。私はまだそれを信じています。コードを共有する際の個人的な基準は、すべての人が使い、維持するための悪夢です。熟考してください:)もしあなたがルビーコアに問題を起こすことができれば。 –

関連する問題