这是一个关于命名约定的问题。
我有一个名为PromotedEvents的模型
该文件名为promote_events.rb
我用:
创建了表格create_table :promoted_events do |t|
现在我在创建任何东西时遇到了问题,所以我想知道使用带有两个单词的模型是否有问题
我在控制台中尝试了
a = PromotedEvents.new
a = Promoted_Event.new
a = promoted_event.new
并不断收到nameerror : uninitialized constant
错误
有什么想法吗?
答案 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.rb
。 This page可能会帮助您更好地了解Ruby与Rails特定于何处以及具体使用的约定。
答案 3 :(得分:1)
如果你是像我这样的极端rails n00b,那么你需要记住为新创建的表创建一个类定义并将其放在app / models中。
就像
class LargeCat < ActiveRecord::Base
belongs_to :zoo
end