私は、RubyのServiceオブジェクトに関するいくつかのチュートリアルで使用されているVirtus gemを見ています。 githubページのhttps://github.com/solnic/virtusには、次の例があります。あなたはVirtus社で拡張するクラスを作成し、属性を定義することができますクラスRubyのVirtus gemとattr_accessor
とヴァータスを使用して
:
class User include Virtus.model
attribute :name, String
attribute :age, Integer
attribute :birthday, DateTime
end
user = User.new(:name => 'Piotr', :age => 31) user.attributes # => { :name => "Piotr", :age => 31, :birthday => nil }
user.name # => "Piotr"
user.age = '31' # => 31 user.age.class # => Fixnum
user.birthday = 'November 18th, 1983' # => #<DateTime: 1983-11-18T00:00:00+00:00 (4891313/2,0/1,2299161)>
# mass-assignment user.attributes = { :name => 'Jane', :age => 21 } user.name # => "Jane" user.age # => 21
私は例がどのように動作するかを見ることができますが、これは単なる定義とは異なっているかを理解したいと思いますRubyのattr_accessors?私が誰かに説明しなければならないのであれば、Virtusの宝石を含めることのメリットとそれが何通りかの行で何をするのか、それは何でしょうか?