Ruby on rails 使用Rails对象的属性在ruby中批量分配attr_访问器的最佳方法

Ruby on rails 使用Rails对象的属性在ruby中批量分配attr_访问器的最佳方法,ruby-on-rails,ruby,Ruby On Rails,Ruby,简而言之,我想批量分配一个没有数据库的PORO,它有100个属性为Rails对象的attr_访问器。这一点是通过API公开一个对象,该对象不是ActiveRecord对象,并且该API现在正在内部使用,并且没有通过服务分离。可以做些什么 假设我们有一个带有属性的数据库支持的database::Apple类。我可以使用以下方法将它们全部放在散列中: Database::Apple.first.attributes 假设PORO被称为API::Apple 如果我初始化一个API::Apple,我如何

简而言之,我想批量分配一个没有数据库的PORO,它有100个属性为Rails对象的attr_访问器。这一点是通过API公开一个对象,该对象不是ActiveRecord对象,并且该API现在正在内部使用,并且没有通过服务分离。可以做些什么

假设我们有一个带有属性的数据库支持的
database::Apple
类。我可以使用以下方法将它们全部放在散列中:

Database::Apple.first.attributes

假设PORO被称为
API::Apple

如果我初始化一个
API::Apple
,我如何用数据库备份的
Apple
的属性批量分配它的所有
attr\u访问器
s。有没有一个简单的方法可以做到这一点?这样的东西存在吗


数据库::Apple.new.attributes=API::Apple.first.attributes

这些东西可以为您提供帮助

class API::Apple < SimpleDelegator

  # pass a `Database::Apple` instance to initializer
  def initialize(database_apple)
    @database_apple = database_apple
    super
  end
end
class API::Apple

作为的一个具体实现,此类提供 表示将所有支持的方法调用委托给传递给的对象 构造器


因此,换句话说,您的
API::Apple
PORO的任何实例都可以访问
Database::Apple
实例的所有100个属性。

那么它就是
API::Apple.new(Database::Apple.first)
?那
super
调用SimpleDelegator的初始化方法吗?@Jwan622 yes and yes:)