导轨4--没有桌子的模型

use*_*289 9 activerecord ruby-on-rails ruby-on-rails-4

我有一个Feed没有任何"本地"数据的view()的模型,视图和控制器.也就是说,数据通过Web服务调用抓取到客户端站点并在本地视图中呈现.

本地站点需要验证从远程站点获取的对象是否有效(通过验证User拥有该对象的对象是否有效Feed)然后显示它.

我有逻辑从Feed模型中的远程源获取数据.然后Feed控制器获取feed id的URL参数,将其传递给模型getFeed函数,并显示它.

但是,由于没有表,Feed.getFeed(params[:feed_id])控制器中的调用返回错误说there is no table Feed.

我应该删除Feed模型,只是让getFeed函数成为辅助函数吗?什么是正确的Rails方式来处理没有表的模型?

Dan*_*ail 6

仅仅因为你使用Rails,并不意味着每个模型都必须继承 ActiveRecord::Base

在你的情况下,我只是按照以下方式做一些事情:

# app/models/feed.rb
class Feed
  def initialize(feed_id)
    @feed_id = feed_id
  end

  def fetch
    # ... put the web-service handling here
  end

  # encapsulate the rest of your feed processing / handling logic here
end

# app/controllers/feeds_controller.rb
class FeedsController < ActionController::Base
  def show
    @feed = Feed.new(params[:feed_id])
    @feed.fetch

    # render
  end
end
Run Code Online (Sandbox Code Playgroud)

记住:它是Ruby on Rails,而不仅仅是Rails.您可以做的不仅仅是ActiveRecord模型.