可以在 PORO 中使用新的 ActiveRecord::Attributes API 吗?

pra*_*mer 5 ruby-on-rails rails-activerecord ruby-on-rails-5

我通常将 ActiveModel::Model 包含到一些 PORO 中(例如对于 FormObject::SignUp)。我读过新的 Rails 5 ActiveRecord::Attribute API,我想我可以用它来进行更简单的转换,但不是运气。

例如,给定

class FormObject::SignUp
  include ActiveRecord::Model
  include ActiveRecord::Attributes

  attribute :birthday, :date
  validates :birthday, presence: true
end
Run Code Online (Sandbox Code Playgroud)

NameError: undefined local variable or method `reload_schema_from_cache' for FormObjects::SignUp:Class当我尝试实例化它时出现异常。

预计不会单独使用?谢谢

gka*_*ats 1

如果您查看文档,似乎该模块不能独立使用,因为它做出了很多假设(主要是关于模式支持的模型)。

即使您尝试使用该define_attribute方法,您仍然需要提供其他类方法的实现,例如attribute_types

ActiveModel::Model在 Rails 5 中使用有什么问题?

class Poro
  include ActiveModel::Model

  attr_accessor :foo
end
Run Code Online (Sandbox Code Playgroud)