Rails:使用活动记录使远程代理保持不变

时间:2013-03-19 01:37:08

标签: ruby-on-rails-3.2 rails-activerecord proxy-classes

课程代理知道远程系统上课程的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有太多方法可用作代理。

解决方案是什么?

1 个答案:

答案 0 :(得分:0)

找到答案: http://solnic.eu/2011/08/01/making-activerecord-models-thin.html

Piotr说(如果我理解正确的话)通过直接继承活动记录使模型持续存在会污染模型/域对象的职责。 他展示了如何解决这个问题的方法,这是一个比我的问题更为普遍的解决方案。