我在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
我该怎么做?
答案 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
有一个很好的自述文件。