Rails无表模型

时间:2010-03-13 20:58:29

标签: ruby-on-rails rss model ruby-on-rails-plugins

我正在创建一个无表格的Rails模型,并且我对如何使用它有点困惑。

基本上我正在尝试使用Feedzirra创建一个小应用程序,每隔X秒扫描一次RSS提要,然后向我发送一封只包含更新的电子邮件。

我实际上是在尝试将它用作主动记录模型,虽然我可以将其用于工作,但似乎并没有按预期“保存”数据。

作为一个例子,我有一个初始化方法,它首次解析feed。在接下来的请求中,我想简单地调用get_updates方法,根据feedzirra,该方法是现有对象(在初始化期间创建),仅使用差异进行更新。

我发现很难理解这一切是如何工作的,因为在初始化方法上创建的对象似乎不会在模型上的所有方法中持续存在。

我的代码类似于:

def initialize
     feed parse here
end

def get_updates
     feedzirra update passing the feed object here
end

不确定这是否是正确的做法,但这一切似乎有点令人困惑,而且不是很清楚。我可能会在这里做得过多或做得不好,但我希望你对这种方法有所了解。

提前致谢

2 个答案:

答案 0 :(得分:1)

使用单例设计模式,可以在ruby on rails上的请求之间保留内存中的值。 Rails不会在每个请求上重新加载所有对象,因此可以保留内存存储。

在config / initializers / xxx

中有以下内容
require 'singleton'
class PersistanceVariableStore
  include Singleton
  def set(val)
    @myvar = val
  end
  def get
    @myvar
  end
end

在控制器中,例如:

@r = PersistanceVariableStore.instance
@r.set(params[:set]) if params[:set]

然后在视图中:

<%= @r.get %>

@r中的值将在请求之间保持不变(除非以cgi模式运行)。

不是我认为这是一个好主意......

答案 1 :(得分:0)

实例变量不会在请求之间保留,因为它们是完全不同的实例。您可能希望将Feed数据存储在数据库中,以便可以在请求之间保存并在下一个请求之后更新。