railsのmodel名は単数形
昨日からモデルのリレーションシップを定義しているんだが上手くいかなかった。
原因は
モデル名 を複数形で定義していたこと。
Railsの創始者である、David Heinemeier Hansson の哲学が
モデル名は単数形、テーブル名は複数形であるべき
らしいです。
ということでモデル名をこんな感じで単数形で定義したら問題なくいけました。
# user.rb class User < ActiveRecord::Base has_many :sports #has_manyなので複数形 attr_accessible :name end #sport.rb class Sport < ActiveRecord::Base belongs_to :user attr_accessible :name end
railsはいろいろと細かいルールが結構あるなと感じている。
ルールがあるぶん便利に使えるっていのもあるからバランスは大事ですね。
おまけ
いろいろと調べてたらrailsのコンソールツールで
定義した単語の複数形を調べるメソッドがあってちょっと驚いた。
irb(main):001:0> "dog".pluralize => "dogs" irb(main):003:0> "person".pluralize => "people" irb(main):004:0> "fish".pluralize => "fish" irb(main):006:0> "person".singularize => "person"
Rails3レシピブック 190の技
posted with amazlet at 12.08.24
高橋 征義 松田 明 諸橋 恭介
ソフトバンククリエイティブ
売り上げランキング: 141484
ソフトバンククリエイティブ
売り上げランキング: 141484