質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

2回答

6260閲覧

railsのモデル名や属性などの命名規則がわからなくなってきましrail

Ohiirechan

総合スコア24

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

2クリップ

投稿2017/01/29 03:23

たとえばカラムを追加するときは

rails generate migration AddTagToUsers name:string

というようにUserモデルはUsersというように複数形になります。
そしてマイグレーションファイルの中身は

def change remove_reference :ticekts, <--これ :event, foreign_key: true end

このように複数形になっています。
かとおもうと、インスタンスを作るときはUser.newと、単数形になります。
しかしhas_manyの関連づけをしているときはUser.notes.buildのようにUserモデルは単数形で、noteモデルは複数形になります。

でも、paramsで値を取得するときは

params[:user][:name]

というように単数形になっています。

ほかにコードを見直してなかったのですが、きっとほかにもあるはずです。これはどのような規則で単数と複数を切り替えているのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Ruby on Railsの命名規則は最初てこずりますよね。
英語圏の方は気にならないかもしれないですが。

rails generateで作成するとだいたい以下のようになるかと思います

controller → 複数形 - ファイル名:users_controller.rb - class名:UsersController model → 単数形 - ファイル名:user.rb - class名:User データベース → 複数形 - table名:users view → 複数形 - ディレクトリ名:users/

といった感じ。
(この辺は慣れるしかないかも。。。)

また、has_manyで指定した場合は、

ruby

1user.notes

user というレシーバーに対して note が複数あるのがわかるようになっています。

user.note # userから見たnoteが1つある user.notes # userから見たnoteが複数ある

とわざわざmodelを確認するまでもなくモデル間の関係がわかるわけです。

可読性を高める為にこのようになっているんでしょうね。

投稿2017/01/29 05:31

satoshih

総合スコア797

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

理屈は単純で、「複数扱うもの」が複数形、「単数扱うもの」が単数形です。

  • コントローラー、テーブル…すべてのモデルを1つのコントローラー、テーブルで扱うので、複数形
  • モデル…Model.newとすると1レコードだけのモデルができるように、1レコード単位で扱うので単数形
  • アソシエーション…has_manyは複数作れるので複数形、belongs_tohas_oneは1つだけなので単数形
  • リクエストパラメーター…通常、一度に1モデルしか編集しないので、単数形

投稿2017/01/29 03:29

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問