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 持久化(不是课程信息),以便代理记住如何在以后再次获取信息。

Course继承自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 回答