attr_accessor默认值

Vas*_*rth 54 ruby ruby-on-rails attr-accessor

我正在使用rails,我想这样做attr_accessor :politics,默认设置为false.

有谁知道如何做到这一点,能够用简单的术语解释它吗?

Orl*_*ndo 120

Rails有attr_accessor_with_default所以你可以写

class Like
  attr_accessor_with_default :politics,false
end

i = Like.new
i.politics #=> false
Run Code Online (Sandbox Code Playgroud)

就这样

UPDATE

在Rails 3.2中已经弃用了attr_accessor_with_default ..你可以用纯Ruby做这个

class Like
  attr_writer :politics

  def politics
    @politics || false
  end
end

i = Like.new
i.politics #=> false
Run Code Online (Sandbox Code Playgroud)

  • 请注意,该示例仅适用于默认值false.我需要默认值为true,所以我用过:`@ politics.nil??真:@ politics` (16认同)
  • 如果你默认使用数组,请使用:`def politics; @politics || = []; 结束`或<<将无法工作,直到您以其他方式为政治分配价值. (3认同)