gpt4 book ai didi

ruby-on-rails - Ruby 的 Virtus gem 与 attr_accessor

转载 作者:行者123 更新时间:2023-12-04 03:41:25 33 4
gpt4 key购买 nike

我正在查看一些关于 Ruby 中服务对象的教程中使用的 Virtus gem。在github页面中,https://github.com/solnic/virtus ,它给出了以下示例。

在类中使用 Virtus

您可以创建使用 Virtus 扩展的类并定义属性:

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 gem 的好处及其在几行中的作用,那会是什么?

最佳答案

Virtus 的目标可以概括为试图使属性更“Rails-y”。它们提供对解析表单/JSON、封装的支持 while retaining type information ,以及其他一些事情,获得​​常规属性并非不可能,但也不容易。

然而,当您将 Virtus 与 ActiveModel::Validations 结合使用时,真正的好处就来了。每 this post .由于您的基本值变得更加符合 Rails 表单助手的期望,因此您有一个非常强大的嵌套表单替代方案。

关于ruby-on-rails - Ruby 的 Virtus gem 与 attr_accessor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39595856/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com