Ruby / Rails - 以两个单词命名的模型(命名约定问题)

时间:2011-02-04 00:25:59

标签: ruby-on-rails ruby naming-conventions

这是一个关于命名约定的问题。

我有一个名为PromotedEvents的模型

该文件名为promote_events.rb

我用:

创建了表格
create_table :promoted_events do |t|

现在我在创建任何东西时遇到了问题,所以我想知道使用带有两个单词的模型是否有问题

我在控制台中尝试了

a = PromotedEvents.new

a = Promoted_Event.new

a = promoted_event.new

并不断收到nameerror : uninitialized constant错误

有什么想法吗?

4 个答案:

答案 0 :(得分:51)

你的课应该是单声道的。

在文件PromotedEvent

中将其命名为promoted_event.rb
a = PromotedEvent.new

答案 1 :(得分:21)

模型名称是单数和驼峰案例,如pe = PromotedEvent.new()

该文件应为promoted_event.rb

控制器是复数

PromotedEventsController

常量为ALL_CAPS

当地人是separated_by_underscores_and_lowercase

表名是复数'SELECT * FROM promote_events`

答案 2 :(得分:9)

如果有帮助,我总是这样想:

模型名称是单数,因为它代表单个特定的事物。因此,PromotedEvent是具有名称,日期等的特定提升事件。

另一方面,表名是复数。这是因为该表存储了这些单数项的集合。所以,promote_events。

在rails中,文件名大多是常规问题,因为ruby在这方面有相当宽松的规则,但通常是class_name.rbThis page可能会帮助您更好地了解Ruby与Rails特定于何处​​以及具体使用的约定。

答案 3 :(得分:1)

如果你是像我这样的极端rails n00b,那么你需要记住为新创建的表创建一个类定义并将其放在app / models中。

就像

class LargeCat < ActiveRecord::Base
    belongs_to :zoo
end