Ruby on rails 使用Rails对象的属性在ruby中批量分配attr_访问器的最佳方法
简而言之,我想批量分配一个没有数据库的PORO,它有100个属性为Rails对象的attr_访问器。这一点是通过API公开一个对象,该对象不是ActiveRecord对象,并且该API现在正在内部使用,并且没有通过服务分离。可以做些什么 假设我们有一个带有属性的数据库支持的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,我如何
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:)