Ruby 禁用virtus属性的写入程序
我在ruby类中使用virtus进行属性定义:Ruby 禁用virtus属性的写入程序,ruby,Ruby,我在ruby类中使用virtus进行属性定义: class Client include Virtus.model attribute :api_token, String end 现在我想禁用api_令牌设置器,使其仅在初始化时工作: client = Client.new(api_token: 'test_token') client.api_token='new_token' #this should not work 我如何才能做到这一点?您需要使用: cl
class Client
include Virtus.model
attribute :api_token, String
end
现在我想禁用api_令牌设置器,使其仅在初始化时工作:
client = Client.new(api_token: 'test_token')
client.api_token='new_token' #this should not work
我如何才能做到这一点?您需要使用:
class ReadOnlyString
另一个选择是
顺便说一句,Virtus
有一个很棒的自述文件
class ReadOnlyString < Virtus::Attribute
def coerce(value)
raise 'Finalized'
end
end
class Client
include Virtus.model
attribute :api_token, ReadOnlyString
end