0

我有带有验证、一些方法、过滤器等的模型。不幸的是,数据来自 API,所以我需要重载从数据库中提取记录的方法。那是什么方法?

到目前为止,我有创作。在活动记录模型中创建的方法是保存新记录。我只是将方法 create 添加到我的模型中,它正在通过 API 创建记录。现在我想要它来选择数据。

以下代码是我已经拥有的示例(创建记录):

def create
  EmployeesApi.create(self.attributes.reject{|k,v| %w(id created_at updated_at).include? k })
end

我需要它尽可能低级别,因为它有一些关系和特定于应用程序的验证。移动关系和周围的逻辑将意味着集成两个现有系统,在这种情况下这是不行的。

另一种解释:

我想绕过数据库获取模型的数据,但为了关联,让一切保持原样。模型的数据存储在另一个应用程序/数据库/系统中。

我将通过 API 加载模型自己的数据,ActiveRecord 将从本地数据库配对/加载它的关联

4

2 回答 2

2

如果 EmployeeApi 将在ActiveResource之后建模,您可以使用ActiveModel对其进行增强。关联可能只以一种方式工作(从 ActiveRecord 到 ActiveResource)。考虑 API 关闭等异常也很好。

于 2013-05-10T21:57:48.837 回答
0

我认为您要实现的是在创建此记录之前从数据库中提取一些数据?或验证一些数据库字段,也许确保唯一的约束或其他东西。请查看活动记录挂钩/回调

http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

你可以这样做:

class Subscription < ActiveRecord::Base
    before_create :record_signup

    private
    def record_signup
      self.signed_up_on = Date.today
    end
end
于 2013-05-10T16:13:30.993 回答