禁用编写器以支持virtus attribiute

时间:2015-06-25 06:52:40

标签: ruby

我在ruby类中使用virtus进行属性定义:

  class Client
    include Virtus.model

    attribute :api_token, String
  end

现在我想禁用api_token setter仅适用于初始化:

client = Client.new(api_token: 'test_token')
client.api_token='new_token' #this should not work

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您需要使用http://www.codemag.com/Article/1401031

class ReadOnlyString < Virtus::Attribute
  def coerce(value)
    raise 'Finalized'
  end
end

class Client
  include Virtus.model

  attribute :api_token, ReadOnlyString
end 

其他选项是custom coercion

顺便说一下,

Virtus有一个很好的自述文件。