web-dev-qa-db-ja.com

attr_accessorのデフォルト値

Railsを使用しており、attr_accessor :politicsは、デフォルトでfalseに設定されています。

誰もこれを行う方法を知っていて、私のために簡単な言葉で説明できますか?

52
Vasseurth

Railsには attr_accessor_with_default があるため、次のように記述できます。

class Like
  attr_accessor_with_default :politics,false
end

i = Like.new
i.politics #=> false

そしてそれはすべてです

[〜#〜] update [〜#〜]

attr_accessor_with_default は、Rails 3.2。で廃止されました。代わりに、純粋なRubyでこれを行うことができます。

class Like
  attr_writer :politics

  def politics
    @politics || false
  end
end

i = Like.new
i.politics #=> false
119
Orlando

Virtus gemを使用できます。

https://github.com/solnic/virtus

READMEから:

Virtusでは、タイプ、リーダー/ライターメソッドの可視性、強制動作に関するオプション情報を使用して、クラス、モジュール、またはクラスインスタンスの属性を定義できます。多くの強制と、埋め込みオブジェクトとコレクションの高度なマッピングをサポートします。

具体的には、 デフォルト値 をサポートしています。

0
Thilo

Attr_accessorを定義する場合、デフォルトでは値はnilです。あなたはそれに書き込み、それによってそれを!nilにすることができます

0
user1340154