[英]Best way to mass assign attr_accessors in ruby with the attributes of a Rails object
簡而言之,我想批量分配一個沒有數據庫的 PORO,其中有 100 個具有 Rails 對象屬性的 attr_accessors。 這樣做的目的是通過 API 公開一個對象,該對象不是 ActiveRecord 對象,並且這個 API 現在正在內部使用,並且沒有通過服務分離。 可以做什么?
假設我們有一個帶有屬性的數據庫支持的Database::Apple
類。 我可以使用以下方法將它們全部放入哈希中:
Database::Apple.first.attributes
假設 PORO 被稱為API::Apple
如果我初始化一個API::Apple
,我怎么能用數據庫支持的Apple
的屬性批量分配它的所有attr_accessor
。 是否有捷徑可尋? 這樣的東西存在嗎?
Database::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
作為
Delegator
的具體實現,此類提供了將所有支持的方法調用委托給傳遞給構造函數的對象的方法。
因此,換句話說,您的API::Apple
PORO 的任何實例都可以訪問Database::Apple
實例的所有 100 個屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.