これは、命名規則についての質問です。
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
エラー
何か案は?
クラスは単数形でなければなりません。
ファイルにPromotedEvent
という名前を付けますpromoted_event.rb
a = PromotedEvent.new
モデル名は単数形でキャメルケースのようですpe = PromotedEvent.new()
ファイルはpromoted_event.rb
コントローラーは複数
PromotedEventsController
定数はALL_CAPS
ローカルはseparated_by_underscores_and_lowercase
テーブル名は複数形です 'SELECT * FROM Promod_events`
それが役立つ場合、私はいつもこのように考えます:
モデル名は、特定の単一のものを表すため、単数形です。したがって、PromotedEvent
は、名前、日付などを持つ特定のプロモートイベントです。
一方、テーブル名は複数形です。これは、テーブルにこれらの単一アイテムのコレクションが格納されているためです。したがって、promoted_events。
Railsでは、Rubyにはこの点に関してかなり緩い規則があるため、ファイル名はほとんど規則の問題ですが、通常はclass_name.rb
。 このページ は、どの規則がどこで使用されているか、およびRuby対Railsに固有)の概要を理解するのに役立つ場合があります。
あなたが極端な場合Rails n00b私のように、新しく作成したテーブルのクラス定義を作成し、それをapp/modelsに配置することを忘れないでください。
それは次のようになります
class LargeCat < ActiveRecord::Base
belongs_to :Zoo
end