我在ruby类中使用virtus进行属性定义:
class Client
include Virtus.model
attribute :api_token, String
end现在我想禁用api_token设置器,使其仅在初始化时起作用:
client = Client.new(api_token: 'test_token')
client.api_token='new_token' #this should not work我该怎么做呢?
发布于 2015-06-25 15:17:15
您需要使用custom coercion:
class ReadOnlyString < Virtus::Attribute
def coerce(value)
raise 'Finalized'
end
end
class Client
include Virtus.model
attribute :api_token, ReadOnlyString
end 另一种选择是override a setter。
顺便说一句,Virtus有一个很棒的自述文件。
https://stackoverflow.com/questions/31043200
复制相似问题