课程代理知道远程系统上课程的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有太多方法可用作代理。
解决方案是什么?
答案 0 :(得分:0)
找到答案: http://solnic.eu/2011/08/01/making-activerecord-models-thin.html
Piotr说(如果我理解正确的话)通过直接继承活动记录使模型持续存在会污染模型/域对象的职责。 他展示了如何解决这个问题的方法,这是一个比我的问题更为普遍的解决方案。