web-dev-qa-db-ja.com

Ruby / Rails-2つの単語で命名されたモデル(命名規則の問題)

これは、命名規則についての質問です。

PromotedEventsというモデルがあります

このファイルは、promoted_events.rbという名前です。

私はテーブルを作成しました:

create_table :promoted_events do |t|

今、私は何かを作成することに問題を抱えているので、2つの単語を含むモデルを使用して何か問題があるのではないかと思っています。

コンソールでイムしてみました

a = PromotedEvents.new

a = Promoted_Event.new

a = promoted_event.new

nameerror : uninitialized constantエラー

何か案は?

33
ChrisWesAllen

クラスは単数形でなければなりません。

ファイルにPromotedEventという名前を付けますpromoted_event.rb

a = PromotedEvent.new
53
Alex Wayne

モデル名は単数形でキャメルケースのようですpe = PromotedEvent.new()

ファイルはpromoted_event.rb

コントローラーは複数

PromotedEventsController

定数はALL_CAPS

ローカルはseparated_by_underscores_and_lowercase

テーブル名は複数形です 'SELECT * FROM Promod_events`

21
loosecannon

それが役立つ場合、私はいつもこのように考えます:

モデル名は、特定の単一のものを表すため、単数形です。したがって、PromotedEventは、名前、日付などを持つ特定のプロモートイベントです。

一方、テーブル名は複数形です。これは、テーブルにこれらの単一アイテムのコレクションが格納されているためです。したがって、promoted_events。

Railsでは、Rubyにはこの点に関してかなり緩い規則があるため、ファイル名はほとんど規則の問題ですが、通常はclass_name.rbこのページ は、どの規則がどこで使用されているか、およびRuby対Railsに固有)の概要を理解するのに役立つ場合があります。

10
markquezada

あなたが極端な場合Rails n00b私のように、新しく作成したテーブルのクラス定義を作成し、それをapp/modelsに配置することを忘れないでください。

それは次のようになります

class LargeCat < ActiveRecord::Base
    belongs_to :Zoo
end
1
Danny