Rails中的远程数据模型

问题描述:

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

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

下面的代码示例我已经有(创造的记录):

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

我需要它作为低级别的,因为它有一些关系,应用特定的验证。移动关系和周围的逻辑意味着整合两个现有系统,在这种情况下这并不好。

另一种解释:

我想跳过模型的数据的数据库,但对于联想让一切都恢复。该模型的数据存储在另一个应用程序/数据库/系统中。

我将通过API负荷模型自己的数据和ActiveRecord的将配对/加载它是协会从本地数据库

+0

嗯,我想你不是在寻找'find()'方法,对吧? – Raindal 2013-05-10 16:07:27

+0

斯巴达:如果它能够运作,它会很棒,但不幸的是我需要更深入,因为也有可能涉及到的。在CanCan授权后,*其中*会过滤记录 – Mailo 2013-05-10 16:13:01

如果EmployeeApi会在ActiveResource之后建模,你可以用ActiveModel来增强它。关联只能以一种方式工作(从ActiveRecord到ActiveResource)。考虑API等异常情况也是很好的。

+0

看起来很有前途,迪克。明天再试吧 – Mailo 2013-05-12 14:45:11

我想你想实现的是创造这个纪录之前,拉从DB一些数据?或验证一些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 
+0

不,我想绕过模型数据的数据库,但为了关联,让所有事情都像原来一样。该模型的数据存储在我看到的另一个应用程序/数据库/系统 – Mailo 2013-05-10 16:19:06

+0

中,所以您的数据创建者会是某种代理模式。有道理..(http://en.wikipedia.org/wiki/Proxy_pattern)。至于积极的记录,你正在关闭关闭持久性(http://api.rubyonrails.org/classes/ActiveRecord/Persistence.html#method-i-persisted-3F)...更具体的持续?方法。祝你好运 – DevDude 2013-05-10 16:28:16

+0

我不关闭持久性。我已经坚持不懈。现在我需要加载。但你是对的代理patern – Mailo 2013-05-10 16:41:19