0

コース プロキシは、リモート システム上のコースの ID を認識しており、アクセス時にその情報を取得します。コード例:

class Course < BasicObject
  attr_accessor :course_id, :course_info
[..]
def method_missing(*a, &b)
  if course_info.nil?
    load_course_info
  end
  course_info.send(*a, &b)
end
[...]

def load_course_info
 # this will fetch the course information from a remote server
 # using the course_id
end

私の問題: アクティブ レコードを使用して、プロキシの course_id を (コース情報ではなく) 永続化して、プロキシが後の段階で情報を再度取得する方法を記憶できるようにしたいと考えています。

コースは BasicObject を継承しているのでできない

Course < ActiveRecord::Base

ActiveRecord::Base には、プロキシとして使用するにはメソッドが多すぎると思います。

解決策は何ですか?

4

1 に答える 1

0

https://solnic.codes/2011/08/01/making-activerecord-models-thin/で答えを見つけました

Piotrは(私が正しく理解していれば)アクティブレコードから直接継承することでモデルを永続化すると、モデル/ドメインオブジェクトの責任を汚染することにつながると言います。

彼はこの問題を解決する方法を示しています。これは私の質問が関係していたものよりも一般的な解決策です。

于 2013-03-19T23:31:24.243 に答える