@Konboi memo

主に技術に関してつらつらと。

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の技
高橋 征義 松田 明 諸橋 恭介
ソフトバンククリエイティブ
売り上げランキング: 141484