如何在rails中抽象功能

时间:2014-11-07 18:24:50

标签: ruby-on-rails code-generation abstract

我对ruby和rails很新。我来自C ++背景,所以ruby和rails有点烦恼。

我设计了一个作为队列运行的rails应用程序。 Web API允许将项目推入队列并从队列中弹出。目前,它作为一个特定的应用程序,具有属于Jobs的Jobs模型和JobQueueItems模型。但是,队列的机制根本不是Job特有的。它只依赖于队列中项目的外键。我如何抽象这种行为,以便下次我想要一个AnimalQueue或一个CustomerQueue,我可以在我的应用程序中创建一个?

我知道我可以创建一个生成器,它将使用名称和方法创建模型代码,例如" Job"硬编码,然后调用

rails g MyCoolQueue Job

但这似乎很复杂。有要设置的路径,名称和视图以及强参数方法。还有另外一种方法吗?可以使用继承或接口来使其工作吗?类似的东西:

class QueueItem < ActiveRecord::Base
end

class JobQueueItem < QueueItem
    belongs_to :Job
end

class QueueItemsController < ApplicationController
    # all my queue controls, reference the foreign key and associated model in a generic way...
end

class JobQueueItemsController < QueueItemsController
    # suddenly I have the controls to queue jobs?
end

# And also some views that generically reference the necessary fields and models in a QueueItem?
# Suddenly I have views for JobQueueItems?

如何制作一个易于插入rails应用程序的抽象数据类型,工具或其他抽象关系?可以想象任何可以抽象行为和关系的场景,只需要填写模型和字段的名称。我确信经验丰富的rails开发人员不会每次都从头开始重新编写所有内容复制和粘贴。正如我之前所说,我是ruby和rails的新手,所以我想学习标准的RoR方法来做这样的事情。代码生成是唯一的方法吗?

谢谢!

0 个答案:

没有答案