環境
macOS: Big Sur Ver11.2.2
Rails: 6.0.0
Ruby: 2.6.5
困ったこと
モデルを作成したときにモデル名をアッパーキャメルケースで記述したとき、アソシエーションを書くときはどういう形式(アッパーキャメル?、キャメルケース?、スネークケース?)で書くのか迷いが生じた。
実際、書き方が違うだけでエラーが出て2時間も解決に時間を要したことから注意したいところ。
#実例
作成したモデルは以下の通り。
Acitive Hashのクラスも含んでます。
class OrderDetail < ApplicationRecord
belongs_to :order
extend ActiveHash::Associations::ActiveRecordExtensions
belongs_to :prefecture
belongs_to :visit_time
belongs_to :visit_day
# バリデーションはフォームオブジェクトクラスに記述
end
class VisitDay < ActiveHash::Base
self.data = [
{ id: 0, name: '--' },
{ id: 1, name: '本日' },
{ id: 2, name: '明日' },
{ id: 3, name: 'あさって' }
]
include ActiveHash::Associations
has_many :order_details
end
class VisitTime < ActiveHash::Base
self.data = [
{ id: 0, name: '--' },
{ id: 1, name: '7時〜8時' },
{ id: 2, name: '8時〜9時' },
{ id: 3, name: '9時〜10時' },
{ id: 4, name: '10時〜11時' },
{ id: 5, name: '11時〜12時' },
{ id: 6, name: '13時〜14時' },
{ id: 7, name: '14時〜15時' },
{ id: 8, name: '15時〜16時' },
{ id: 9, name: '16時〜17時' },
{ id: 10, name: '17時〜18時' },
{ id: 11, name: '18時〜19時' },
{ id: 12, name: '19時〜20時' },
{ id: 13, name: '20時〜21時' }
]
include ActiveHash::Associations
has_many :order_details
end
見ていただければ分かる通り、3つのモデル(クラス)は全てアッパーキャメルケースで定義しています。
こういう場合、アソシエーションでモデル名を記述するときはスネークケースで記述すること!
初心者の自分はアソシエーションを書くときになんとなくキャメルケースで書いてしまい、それがエラーの原因となっていました。
皆様はどうぞお気をつけください。