我有模型验证,一些方法,过滤器等。不幸的是,数据来自API,所以我需要重载从DB拉记录的方法。这是哪种方法?
到目前为止,我已经创建。在活动记录的模型中创建方法保存新记录。我只需要添加方法create到模型它通过API创建记录。现在我想用它来选择数据。
下面的代码是我已经拥有的(创建记录)的示例:
def create
EmployeesApi.create(self.attributes.reject{|k,v| %w(id created_at updated_at).include? k })
end
我需要它越低越好,因为它有一些关系和应用程序特定的验证。移动关系和周围的逻辑意味着整合两个现有的系统,在这种情况下是不行的。
另外一种解释:
我想绕过数据库获取模型的数据,但对于关联,让一切保持原样。模型的数据存储在另一个应用程序/数据库/系统中。
我将通过API加载模型自己的数据,ActiveRecord将从本地DB配对/加载它的关联
如果EmployeeApi将在ActiveResource之后建模,您可以使用ActiveModel增强它。关联可能只以一种方式工作(从ActiveRecord到ActiveResource)。考虑API down等异常也很好。
我认为你想要实现的是在创建此记录之前从DB中提取一些数据?或者验证一些数据库字段,可能确保一个唯一的约束或其他…请查看活动记录钩子/回调
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