Rails:当一个模特?当一个lib?

Kev*_*ore 7 ruby-on-rails

我正在制作一个小小的消息发送模块.它将处理来自后台工作人员接收的请求的排队消息,以发送电子邮件/ SMS(或适当地进行测试以进行测试).

问题:这是一个模型(在/ app/models下)还是一个lib(在/ lib下).

我想要一些宗教信仰.

理论A :(我当前的理论)除非你是ActionMailer :: Base或ActiveRecord :: Base等的子类,否则你的代码应该进入lib.

理论B :(理论我倾向于)应用特定的东西应该在模型中.任何可能普遍使用的东西都应该在lib中.

理论C:只有"数据模型"应该在"模型"中.但是,ActionMailer子类违反了这条规则.

据我所知,无论哪种方式它都可以正常工作,但我正在寻找一个与另一个相比的任何微妙的功能或哲学原因.

思考?

ben*_*sie 5

无论消息是从ActiveRecord还是ActionMailer继承,您可能需要一个模型用于视图和控制器交互的任何对象.在您的情况下,他们将处理Message类的实例 - 您需要一个模型.

至于消息发送模块 - 如果您计划在其他地方重用代码,那么提取到库是很好的,您可以在任何类中包含该模块.

由于这只是一个"小"消息发送模块,您可能希望从模型开始并最终提取到一个单独的模块,如果它可能在其他地方有用或您的模型太乱.