2016-09-28 5 views
0

要するに、Railsオブジェクトの属性を持つ100個のattr_accessorsを持つデータベースを持たないPOROを大量に割り当てる必要があります。そのポイントは、ActiveRecordオブジェクトではないAPIを介してオブジェクトを公開することです。このAPIは現在内部で使用されており、サービス上では分離されていません。何ができますか?Rubyのattr_accessorsをRailsオブジェクトの属性で割り当てる最も良い方法

属性を持つデータベースバックアップのDatabase::Appleクラスがあるとします。私が使用してハッシュでそれらのすべてを取得することができます:

Database::Apple.first.attributes

私はマスの属性とそのattr_accessor秒のすべてを割り当てることができますどのように、私はAPI::Appleを初期化する場合はポロがAPI::Apple

と呼ばれていると言いますデータベースバックアップApple。これを行う簡単な方法はありますか?このようなものは存在しますか?

Database::Apple.new.attributes = API::Apple.first.attributes

答えて

1

これらの行には何かがあります。

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ポロの任意のインスタンスはDatabase::Appleインスタンスのすべての100個の属性にアクセスする必要があります。

+0

これは 'API :: Apple.new(Database :: Apple.first)'でしょうか?その 'super'はSimpleDelegatorのinitializeメソッドを呼び出しますか? – Jwan622

+0

@ Jwan622はい、はい:) –

関連する問題