簡體   English   中英

使用 Rails 對象的屬性在 ruby​​ 中批量分配 attr_accessors 的最佳方法

[英]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

SimpleDelegator

作為Delegator的具體實現,此類提供了將所有支持的方法調用委托給傳遞給構造函數的對象的方法。

因此,換句話說,您的API::Apple PORO 的任何實例都可以訪問Database::Apple實例的所有 100 個屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM