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

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

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

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

Q&A

解決済

3回答

3106閲覧

@messageと@messagesの違いについて教えてください。

ogutaka

総合スコア14

Ruby on Rails

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

0グッド

0クリップ

投稿2017/10/30 22:13

def index @message = Message.new @messages = Message.all end

メッセージ機能をつけようとしているのですが、@messageと@messagesの違いについて教えてください。なぜ語尾にsがつくのでしょうか?

下記は解説本の説明です。
自分が投稿したメッセージ一覧を表示してみましょう。
indexアクションで、インスタンス変数@messagesにMessageモデルオブジェクトを全てを渡しています。
Message.all は、Messageモデルオブジェクトが全て格納されているオブジェクトを返します。このオブジェクトは配列のように、eachメソッドなどを使用することができます。
また、viewの方では渡された@messagesを用いて、each文によりMessageモデルオブジェクトを1つ1つ取り出し、名前と内容を表示しています。
MessagesControllerを以下のように編集します。

app/controllers/messages_controller.rb

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

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

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

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

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

guest

回答3

0

rubyは、型がない言語です。
そのため、プログラマーに変数名から型を推測するようなことをします。

そのため、慣例として、複数のものに関しては複数形で表記します。
複数形のものは、Eachなり、Mapなりのメソッドが使えるというのを期待されます。

投稿2017/10/31 02:04

kiichi54321

総合スコア1984

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

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

ogutaka

2017/10/31 03:57

なるほどです。 @messages = Message.allのallが複数形ってことになるのですかね? 逆に@messages = Message.newと複数形にすることも可能ですか?
kiichi54321

2017/10/31 04:23

変数の名前は、名付けているだけだよ。名付けたら、実態が変わるなんて、ファンタジーですか?左辺によって、変数の型が決まっています。Message.newは、一つのオブジェクトを作るものなので、複数になりようがありません。まぁ、複数にしたければ、 @messages = [Message.new] とかにすればいいだけなんですが。
ogutaka

2017/11/01 02:27

なるほどです、ありがとうございます!
guest

0

ベストアンサー

単数形の方は、オブジェクト1個だけを受け取る。複数形の方は、たくさん受け取れる。ということです。たい焼きの型に小麦粉を流し込み、たい焼きを作る(笑)ことを考えます。

1個用のものは、たい焼きのくぼみが1個だけ。複数形のものは、くぼみがたくさん。こんなイメージです。

投稿2017/10/31 03:41

nekoyama7

総合スコア200

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

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

ogutaka

2017/10/31 03:57

なるほどです。 @messages = Message.allのallが複数形ってことになるのですかね? 逆に@messages = Message.newと複数形にすることも可能ですか?
nekoyama7

2017/10/31 11:03

kiichiさんも書いておられますが、new は、1個のオブジェクトの生成用なので、単数でないと、マナー違反でしょう。プログラムが大きくなると、読むのが大変になります。そのとき苦労しないために、名前をわかりやすくしておくと、楽になると思います。
guest

0

返って来るのが配列なので、複数系でsが付いているということだと思います。

投稿2017/10/30 23:31

yuki-saito

総合スコア928

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問