如果未存储在数据库中,则表示rails模型

时间:2011-11-15 02:52:46

标签: ruby-on-rails

是否存在不会存储在数据库中的模型的特定命名约定?例如,我有一个计划,它将是一个模型,但不会在数据库中,因为它只是一个数据结构。换句话说,它不会扩展ActiveRecord :: Base?

3 个答案:

答案 0 :(得分:1)

我将此视为内部实施细节;我不会在名称中反映它,因为与给定模型交互的其他模型不应该知道或关心它是否持久化。而且您的要求可能会在以后发生变化,并且会持久存在。

答案 1 :(得分:1)

如果要在模型中创建一个不会持久保存到数据库的类,而不仅仅是不继承ActiveRecord :: Base

例如

class SomeClass 

end 

类定义仍保存在模型目录

中的文件some_class.rb中

至于命名惯例。那么Model类是一个Model类,它是否持久存储到数据库,或其他地方,或者根本不存在。我认为不需要任何特殊的命名约定。

您的Controller和Views应该只与您的Model对象进行交互,而不必关心该对象的底层持久性机制。这是Model-View-Controller的主要优点之一...... Controller和View无需关心Model对象的内部工作。所以你的命名惯例也不应该。

答案 2 :(得分:0)

我倾向于使非活动记录模型继承自NonActiveRecordModel类(或类似的东西,您可以自己定义)。抽象的NonActiveRecordModel类可以具有所有非活动记录模型使用的常见行为,例如通过可验证的gem等进行验证。