質問: User.new model User テーブル users ``` モデルはcrudするための条件&制約コードを書くためのものだと考えているのですが、 それならばなぜ users.all っといったテーブルを直接指定して記述をしないのですか? 私なりの考え 1. modelはcontrollerと違い、常に使うとは限らないので、インスタンス化するためにUserというモデル名を記載し、特に指定がなければrailsが勝手にUserの複数形のテーブルを探してusers.allを実行してくれる 2. モデルとテーブルは一緒。 つまり、モデル名を書けば自動的にテーブル名に読み替える事が出来る。 です。 アホな質問かもしれませんが、よろしくお願いいたします
回答: モデルとは、ActiveRecord::Baseを継承したクラスの事で、テーブルを表すクラスです。 railsにおいてテーブル操作(SQLの発行)は、モデルを通して行います。 ``` class User < ActiveRecord::Base end ``` モデルは、モデルのクラス名を小文字+複数形にしたものをテーブル名として扱うというrailsの基本ルールがあるので、 > > 特に指定がなければrailsが勝手にUserの複数形のテーブルを探してusers.allを実行してくれる > > モデルとテーブルは一緒。 つまり、モデル名を書けば自動的にテーブル名に読み替える事が出来る。 > > です。 > > > という理解でOKです。 ``` puts User.all.to_sql => SELECT "users".* FROM "users" ``` Userクラスはテーブルを表し、テーブル内の1レコードはUserクラスのインスタンスが対応すると思っておけば良いと思います。