我应该在哪里放置模型访问的功能? - Rails 3.1

use*_*097 3 ruby-on-rails ruby-on-rails-3.1

我被告知帮助程序只是用于视图所需的功能.

我应该在哪里放入模型常用的功能?控制器怎么样?

放置常用函数的惯例是什么:

1)模型

2)观点

3)控制器

问题:在lib中创建一个模块来保存函数并将模块包含在一个类中会为类创建一个实例方法.

问题:这三种常见且需要的功能如何?

Pro*_*ear 5

问题:在lib中创建一个模块来保存函数并将模块包含在一个类中会为类创建一个实例方法.

首先组织,然后优化

问题:这三种常见且需要的功能如何?你真的有三种方法都需要的方法而且还不存在吗?如果是的话,可能你可以给出一个例子

我认为问题应该是在哪里放置逻辑.你应该先考虑一下你的方法在考虑放置它之前的作用.但无论你创造什么,当它变得越来越大或有价值时,你应该考虑将它作为一个宝石/插件出口.

内部导航逻辑(显示内容以及操作后的去向):控制器

  • 应用导航逻辑; application_controller
  • 应用逻辑的子集; 使用主控制器创建名称空间,类API_controller <application_controller

数据逻辑(如何操作,处理数据):模型

  • 数据; 模型类方法(搜索,排序,计数,宏程序......)
  • 基准; 模型实例方法(修改,微处理......)

数据表示逻辑(如何显示数据):助手,部分和装饰器

  • 在我看来,助手不是为此而设计的.
  • 部分句柄布局特定数据.
  • 应用装饰; 处理通用数据表示帮助
  • scope_decoration; 你可以使用继承

布局语言逻辑(布局语言帮助):助手

  • 特定于您的应用; application_helper
  • 特定于模型......; model_helper,但你应该考虑装饰
  • 通用; 将它导出为宝石(超级形式助手,模板系统......)

布局逻辑(我应该显示这个菜单吗?):?

  • 帮助者/装饰者/模型可以回答这个问题:@ user.can_edit?(@ article)
  • 布局处理显示<%= render:partial =>允许?"某事":"别的东西"%>

我想如果你不在这种配置中,你就是在创建一种后端系统.所以它应该在lib中,然后在gem中.

这个组织只是一个例子.最重要的是组织代码并拆分不同的逻辑层,并且在添加新功能后不要犹豫重构/导出代码以使其成为通用的...