Ruby on rails 使用普通ruby对象委派ActiveRecord对象

Ruby on rails 使用普通ruby对象委派ActiveRecord对象,ruby-on-rails,activerecord,delegates,Ruby On Rails,Activerecord,Delegates,我希望能够有一个专门用于开发和测试的TestUser模型,它的行为与我的普通用户模型完全相同,只是它总是进行身份验证。 这里的关键问题是让TestUser始终在用户上调用类方法,并像查找普通用户一样查找其类级实例变量,而不是通过cattr_访问器执行,即: 我知道我可以通过将测试和开发中的用户扩展为始终经过身份验证来做我想做的事情,但我想知道是否有可能使用那个额外的类来做这件事 如果您不打算在生产中使用它,我不会在这方面浪费任何时间 您的测试允许您始终对用户进行身份验证,但为什么要浪费时间在这个

我希望能够有一个专门用于开发和测试的TestUser模型,它的行为与我的普通用户模型完全相同,只是它总是进行身份验证。 这里的关键问题是让TestUser始终在用户上调用类方法,并像查找普通用户一样查找其类级实例变量,而不是通过cattr_访问器执行,即:


我知道我可以通过将测试和开发中的用户扩展为始终经过身份验证来做我想做的事情,但我想知道是否有可能使用那个额外的类来做这件事

如果您不打算在生产中使用它,我不会在这方面浪费任何时间

您的测试允许您始终对用户进行身份验证,但为什么要浪费时间在这个“好东西”问题上,而您可以朝着最终目标编码,以更快/更强/更好地解决这个问题。。。无论你的目标是什么

class TestUser < User
  def authenticate?
    true
  end
end
但是,如果只是测试代码,就应该真正使用tests/rspec


您可以使用:cattr\u accessor:foo来访问类变量。

这不一定是rails或activerecord的问题,但让我明白的是,如果我将创建或构建从TestUser委托给不同的用户,那么我就无法正确扩展所创建的对象。您描述的方法是我们如何为单元测试设置它,我只是想让这个例子简单一些。问题的一部分是我试图避免使用cattr_访问器,尽管我相信这可能是一个实际可行的情况,因为我并不真正关心foo是否向上或向下传播子类。我试图在评论中详细说明这个问题的一般性,但你是对的,这不应该是一个阻碍或任何事情。我只是想知道你能用delegator做多少事情,以及是否有可能从本质上别名出一个类。也许我应该把这个问题作为我的问题,而不是用这个奇怪的例子来总结。
class TestUser < User
  def authenticate?
    true
  end
end