Open justcallmehide opened 3 years ago
rails consoleとは、その名の通りrails専用のコンソールで、Railsに用意されているメソッドはもちろん、自分でアプリケーション内に定義したメソッドや、 ロードしているgemもつかうことができます。
rails consoleを実行する時に、testやproductionなど実行する環境することができます。 例えば、本番環境のDBから特定のユーザーを削除しなければならない場合、下記のようにproductionを引数に渡します。
rails console production
またデータを変更することなくコードをテストするためのオプションとしてsandboxがあります。 こうすればDBの削除コマンドを実行してもデータが変更されることはないので、絶対にミスできない状況では、 sandboxで試してから実行しましょう。
共通の設定をapplication.rbに記述することができます。 ただしこのファイルはエントリーポイントとなるファイルなので、主にi18nの設定や、encoding、time_zoneなどを記述します。
実際の初期設定が必要なものは、 config/initializers/ 以下に作成します。ここの置いたファイルはauto loadされるので、requireでいちいち個別に呼び出す必要はありません。
config/initializers/
putはリソースそのものの更新を表すのに対し、patchはリソースの部分置換を意味します。ユーザー名を更新するといった場合は、patchを使うことが多いです。
onlyとexceptはroutesやbefore_actionなどでも使えるの覚えておく
Railsだと、パスパラメーター、queryパラメーターは、params[]という統一されたインターフェースで扱うことができます。
もうこれはRailsのお作法なので覚える
MassAssignmentとは、ボンっと引数にオブジェクトを渡すやつで、脆弱性を孕む。以下のようなやつ。 モデルの属性をこのように、User.create(:user) 渡してしまうと、脆弱性を生んでしまいます。 例えば、悪意のあるユーザーがuserオブジェクトに、管理者を意味する{admin: true}のような属性を付加し、postするなど。
User.create(:user)
def create User.create(user_params) end private def user_params params.require(:user).permit(:name, :email) end
↑の意味としては、 params[:user]を直接使わず、privateのuser_paramsメソッドを呼ぶようにしている。 また、requireとpermitというメソッドを呼び出して、userオブジェクトが必須パラメーターであることを検証し、 その中で、許されるパラメーターをホワイトリスト形式で許可しています。(.permit(:name, :email))
特定のアクションの前後に処理を挟み込める便利な機能で、コントローラーをみたらまずここを確認しにいく。
なぜRedisやmemecachedのようなRilsアプリケーションサーバーとは別のデータストアにキャッシュを保存した方がいいかというと、高速で、複数のサーバー間で同一のセッションが共有できるから。
https://qiita.com/yokoto/items/52a05bca505a30d64130
rails console
rails consoleとは、その名の通りrails専用のコンソールで、Railsに用意されているメソッドはもちろん、自分でアプリケーション内に定義したメソッドや、 ロードしているgemもつかうことができます。
rails consoleを実行する時に、testやproductionなど実行する環境することができます。 例えば、本番環境のDBから特定のユーザーを削除しなければならない場合、下記のようにproductionを引数に渡します。
rails console --sandbox
またデータを変更することなくコードをテストするためのオプションとしてsandboxがあります。 こうすればDBの削除コマンドを実行してもデータが変更されることはないので、絶対にミスできない状況では、 sandboxで試してから実行しましょう。
初期設定 application.rbとconfig/initializers
共通の設定をapplication.rbに記述することができます。 ただしこのファイルはエントリーポイントとなるファイルなので、主にi18nの設定や、encoding、time_zoneなどを記述します。
実際の初期設定が必要なものは、
config/initializers/
以下に作成します。ここの置いたファイルはauto loadされるので、requireでいちいち個別に呼び出す必要はありません。putとpatchの違い
putはリソースそのものの更新を表すのに対し、patchはリソースの部分置換を意味します。ユーザー名を更新するといった場合は、patchを使うことが多いです。
only: [:hoge] / except: [:hoge]
onlyとexceptはroutesやbefore_actionなどでも使えるの覚えておく
routesで、:hogeでcontrollerからparams[:hoge]dで受け取れる
params[]は魔法
Railsだと、パスパラメーター、queryパラメーターは、params[]という統一されたインターフェースで扱うことができます。
MassAssignmentとStrong Parameters(.requireと.permit)
もうこれはRailsのお作法なので覚える
MassAssignmentとは、ボンっと引数にオブジェクトを渡すやつで、脆弱性を孕む。以下のようなやつ。 モデルの属性をこのように、
User.create(:user)
渡してしまうと、脆弱性を生んでしまいます。 例えば、悪意のあるユーザーがuserオブジェクトに、管理者を意味する{admin: true}のような属性を付加し、postするなど。↑の意味としては、 params[:user]を直接使わず、privateのuser_paramsメソッドを呼ぶようにしている。 また、requireとpermitというメソッドを呼び出して、userオブジェクトが必須パラメーターであることを検証し、 その中で、許されるパラメーターをホワイトリスト形式で許可しています。(.permit(:name, :email))
コントローラー機能で重要なフィルタ (before_action / after_action)
特定のアクションの前後に処理を挟み込める便利な機能で、コントローラーをみたらまずここを確認しにいく。
セッションの保存先の話
なぜRedisやmemecachedのようなRilsアプリケーションサーバーとは別のデータストアにキャッシュを保存した方がいいかというと、高速で、複数のサーバー間で同一のセッションが共有できるから。
https://qiita.com/yokoto/items/52a05bca505a30d64130