Rails / Ruby 初心者ですが、ずっとモヤモヤしているのでここで解決したいと強く思っています。
newがクラスメソッドだということは理解しています。またallであればテーブルから持ってきて、@tweetsのインスタンス変数に代入していることも理解出来ます。
ただ.Tweet.newのようにnewをしている意味がわかりません。
これはまずインスタンス化のnewと同じnewでしょうか。
rb
1 2 3## tweets_controller.rb (コントローラー) 4 5class TweetsController < ApplicationController 6 7 def index 8 @tweets = Tweet.all 9 end 10 11 def new 12 @tweet = Tweet.new //なんのためのnewか 13 end 14 15end 16 17
rb
1 2## tweet.rb (モデル) 3 4class Tweet < ApplicationRecord 5end 6
以前クラスとインスタンスを学習して理解したつもりでしたが、
まずTweet.all
を細かく砕いて見てみると、allというメソッドがTweetに対して使えるのは
TweetクラスがApplicationRecordクラスを継承をしている為、ApplicationRecordクラス内にあるであろうallメソッドというクラスメソッドがあるので使えているのだと思っています。
またそのallメソッドはSQLを直接的に操作が出来て、DBから全てのレコード,カラムを持ってくるメソッドだと思っています。
ここまでは頭の中で理解できるのですが、
いざnewになった時になぜnewをしているのかわかりません。
勉強をしたときにインスタンスを生成してって言うのはわかったつもりでしたが、railsになると意味不明です。
今回やろうと思っている実装は新規でツイートを投稿ページを作成するためにnewを使うとカリキュラムに書いてあります。新規ページのフォームを作るからnewなんでしょうか。
ちなみにこのあと、投稿画面(new.html.erb)でform_withを使用するため、Tweetクラスをインスタンス生成しておきましょう。とありますが、form_withを使用するためのTweetクラスをインスタンス化しなければいけないのは何故かわかりません。
以上質問がまとまってなくて申し訳ないですが、よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー