2

应该将我需要的非数据库数据类创建为 Rails 3“模型”,还是只是 /lib 区域中的基本类?

我想构建一些类来表示计算的域对象。所以这些字段不会引用数据库表/列。类中也会有处理数据的方法。

问题 - 在生成这些类时,这些类应该只是我放在 /lib 区域中的普通 Ruby 类吗?或者我应该/我可以为此使用rails模型(并使用“rails g model ...”生成)?

4

3 回答 3

2

无表模型应该保存在 app/models 中。我有几个访问 API。Rails 中的ActiveModel可以帮助引入 Active Record 的一些有用功能。

于 2012-02-24T02:11:53.383 回答
1

有趣的问题..几周前我也有同样的问题。

我把这些类放在模型目录下。这就是我做出这个决定的原因。我写的课程与一个特定的应用程序完全相关,至少目前没有任何共同的功能可以与任何人分享。我还需要使用我现有的一些模型来查询该类中的一些数据。所以我把它做成模型目录下的一个类。我可能错了,但这就是我现在所做的。

在另一种情况下,我正在为 Web 和移动应用程序使用特定的 api 集,我正在考虑将与 api 接口的代码制作成 gem。这里要注意的是,api 集也是我系统的一部分,它只会被我的应用程序使用。

于 2012-02-24T02:10:31.660 回答
1

不映射到数据库表的类仍然可以驻留在应用程序/模型中。无需从 ActiveRecord::Base 扩展您的类,您可以简单地声明您的类而无需任何扩展(或您自己的扩展)。

CanCan 能力模型就是一个很好的例子。它位于 app/models/ 中,但不扩展 ActiveRecord::Base。关于 CanCan 能力模型的更多信息可以在这里找到:https ://github.com/ryanb/cancan/wiki/Defining-Abilities

还要考虑 lib/ 下的代码默认不会在开发环境中重新加载。

于 2012-02-24T02:12:26.723 回答