new
オブジェクトを作成するだけなので保存もしたい場合はsaveも併用する必要がある。
用途
インスタンス変数に一時的に保存しておいてバリデーションチェックに通過したら保存する。通過しなかったら登録画面に戻すというような用途で使うのが一般的です。
1 |
@user = User.new |
実行例
まだ、この時点では空の仮のレコードができただけです。
モデルクラスのレコードに対して、データを設定する。
構文
1 |
モデルクラスの変数名.カラム名=値 |
実行例
create
new + saveをします。つまりオブジェクトを作成してそのままDBに保存するのですぐにレコードが作成されます。クラスメソッド です。戻り値は保存に成功しても失敗してもモデルオブジェクトを返すので、new + saveのようにバリデーションに成功したら保存、失敗したら保存しないという分岐処理を実装することはできないので注意です。
用途
実務ではあまり使うことがないのかもしれません。Railsコンソール上やseedとかでで手早くデータを作成したい場合とかに使う機会が多いような気がします。
save
DBにデータを保存します。インスタンスメソッドです。成功した場合は「true」、失敗した場合は「false」が返る。
- どちらもバリデーション処理を実行します。
- 「モデルオブジェクト.errors」を通じて検証エラー内容にアクセスすることができます。
errors
「ActiveModel::Errors」というクラスです。
モデルオブジェクト.errors.full_message
検証エラーメッセージ内容が格納されています。
構文
下記の構文を使用すれば、テーブルにデータを登録することができます。
1 |
モデルクラスの変数名.save |
実行例
用途
- DBに保存した場合に分岐処理を行た場合に使う。
- バリデーションエラーがあり得る場合はこちらを使う。
データを設定しただけではまだ、レコード自体がテーブルに格納されていません。
登録結果の確認
登録したidで検索すると、登録した内容が確認できます。
save!
・失敗した場合は「ActiveRecord::RecordInvalid」を発生させることができ、rescueで救うことができる。(ただ、基本的にRailsが自動でrescueを行ってくれて開発者自身はrescueを書かないことが推奨されているため使うケースは非常に少ないです。)
用途
- 例外をトリガーにロールバックをさせる場合に使う。(主な場面としてはTransactionメソッドにより大量データ登録処理とかを行う場合)
レコード抽出系メソッド
テーブルに格納されたデータを全て取り出す。
下記の構文を使います。
1 |
モデルクラス名.all |
実行例
IDを指定してレコードを取り出す。
下記の構文を使います。
1 |
モデルクラス名.find(該当レコードのid) |
実行例
モデルクラスには、ID列は、必須で作成されているので、「User.all」コマンドで確認して、そのIDを元に「User.find」コマンドを実行すれば確認することができます。
レコード更新系メソッド
流れとしては、登録とそれほど違いはありません。
update
変更内容を引数で指定して更新を行う、saveやsave!メソッドを更新用に便利にしたものです。登録時は検証を行う。
update!
変更内容を引数で指定して更新を行う、saveやsave!メソッドを更新用に便利にしたものです。登録時は検証を行う。
update_attributes
変更内容を引数で指定して更新を行う、saveやsave!メソッドを更新用に便利にしたものです。登録時は検証を行う。
update_attributes!
変更内容を引数で指定して更新を行う、saveやsave!メソッドを更新用に便利にしたものです。登録時は検証を行う。
update_attribute
1つの属性の変更を行うが登録時に検証を行わない。
update_column
変更内容を引数で指定して更新を行うが、検証やコールバックは行わない。更新SQLを直接実行する。
update_columns
変更内容を引数で指定して更新を行うが、検証やコールバックは行わない。更新SQLを直接実行する。
update_all
更新SQLを実行する。検証やコールバックは行わない。
直接更新:変数へ登録したレコードを格納
1 |
変数名 = モデルクラス名.find(該当のID) |
実行結果
レコード内容を更新する。
保存及び、確認
削除系メソッド
変数に値を格納
レコードを削除、確認
レコードの削除には、「destroyメソッド」を使います。
管理系コマンド
rails -v
インストールされているRailsのバージョンを確認する。
rails s
作成したRailsアプリを起動する。デフォルトは開発(development)が起動するようになっています。
rails s -e (test/production)
テスト環境や本番環境を起動する。
rails routes
Railsのルーティング情報を出力する。
rails c
irbが起動してRailsのコードを対話的に試すことが可能。
rails c -s
irbが起動してRailsのコードを対話的に試すことが可能です。なお、DBをいじっても終了するときに自動でロールバックしてくれるのでテスト的にコードを動かしたい際に非常に便利なオプションです。
ソース自動生成系コマンド
rails new アプリ名
Railsアプリに必要なファイルを新規作成する。
rails _X.X.X(Railsのバージョン)_ new アプリ名
Railsのバージョンを指定してアプリを作成する。
rails new アプリ名 -d postgresql
postgresqlを使用してアプリを作成する。
rails g controller [コントローラー名] [アクション名](省略可能)
コントローラーを自動生成する。
rails g scaffold リソース名 カラム名1:データ型1 カラム名2:データ型2
テーブルデータを元にしてアプリの雛形を作成するコマンド
rails assets:precompile
Railsのプリコンパイルをするコマンド
DB系コマンド
rails g model モデル名 カラム名1:データ型1 カラム2:データ型2
空のモデルクラスおよび、マイグレーションファイルを作成する。このコマンドを実行しただけではテーブルは作成されない。
rails db:migrate
マイグレーション用コマンド、このコマンドでデータベースにテーブルが作成される。
rails dbconsole
「config/database.yml」で定義した接続情報に従って、Railsからデータベースに接続するためのコンソールに接続する。
rails:db:fixtures:load
fixtures(テストデータ)を開発用のDBに取り込む。
rails db:drop:all DISABLE_DATABASE_ENVIRONMENT_CHECK=1
作成済みのデータベースを全て削除する。
rails db:reset DISABLE_DATABASE_ENVIRONMENT_CHECK=1
現在のテーブルレイアウトでデータベースを再作成する。その後再度テストデータを挿入したい場合は「rails:db:fixtures:load」を実施しましょう。
削除系コマンド
rails destroy controller コントローラ名
コントローラ関連ファイルを削除する。
テーブルデータを見やすくするGemの「hirb」
インストール
1 2 3 4 |
# コンソール出力結果を表にする gem 'hirb', '~> 0.7.3' # コンソール文字列補正 gem 'hirb-unicode-steakknife', '~> 0.0.9' |
hirbに加えて日本語対応させるために「hirb-unicode-steakknife」と言うGemも併せて追加すると良いでしょう。
設定
.irbrcと言うファイルをRailsアプリ直下に作成してRailsコンソール起動時に自動で読み込まれるようにします。(Hirb.enableはhirbを有効化するコマンドでRailsコンソール起動するたびに毎回やらないといけないのでスクリプトとして仕込みます。)
1 2 3 4 5 |
# コンソール起動時 if defined? Rails::Console # Hirb.enableの有効化 Hirb.enable if defined? Hirb end |
実行
Railsコンソール上でHirbを実行してみます。
有効確認
いかがtrueが返ってきたらHirbが有効になっています。
1 |
Hirb::View.enabled? |
二次元配列を表にする。
1 |
puts Hirb::Helpers::Table.render [[3,2], [2,3]] |
ハッシュを表にする。
1 |
puts Hirb::Helpers::Table.render [{:age=>10, :name=>"太郎"}, {:age=>80, :name=>"次郎"}] |
この記事へのコメントはありません。