「Rails4技術者認定ブロンズ試験」対応の模擬試験問題です。株式会社Dive into Codeの野呂浩良が出題します。
問題1~4
問題1
Userモデルに以下のvalidationを設定した。
Userモデルのインスタンスをローカル変数userに代入して、user.updateを実行した際に呼び出されないものを全て選びなさい。
class User < ActiveRecord::Base after_commit -> {puts "commitの後にコールバック"} after_validation -> {puts "validationのあとにコールバックされる"} before_save -> {puts "saveの前にコールバックされる"} before_create -> {puts "createの前にコールバックされる"} after_create -> {puts "createの後にコールバックされる"} end
- 1.after_commit -> {puts “commitの後にコールバック”}
- 2.after_validation -> {puts “validationのあとにコールバックされる”}
- 3.before_save -> {puts “saveの前にコールバックされる”}
- 4.before_create -> {puts “createの前にコールバックされる”}
- 5.after_create -> {puts “createの後にコールバックされる”}
解答・解説
1.update後にデータをcommitします。commitされた後にコールバックされるので正しいです。
2.エラーチェックをするため、validationの後にコールバックされるので正しいです。
3.update
はすでに存在するものをsaveします。 saveされる前にコールバックされるため、正しいです。
〔正解:4、5〕
問題2
CustomerモデルとOrderモデルに以下の関連付けを定義した。Customerを削除した場合に関連付けられるOrderを削除したい。( )に入る適切なものを1つ選びなさい。
class Customer < ActiveRecord::Base has_many :order,dependent: :( ) end class Order < ActiveRecord::Base belongs_to :customer end
- 1.delete
- 2.destroy
- 3.remove
- 4.deleted
解答・解説
dependent: :destroy
を記入することによって関連付けれられたデータが削除されます。1.のdelete
や、3.および4.のdeleted
という書き方はできません。
〔正解:2〕
問題3
次のエラー文が表示されたとき考えられる答えを選べ。
Templete is missing
- 1.viewがない
- 2.コントローラがない
- 3.routingができていない
- 4.コントローラのアクションがない
解答・解説
2.の「コントローラがない」場合は、uninitialized constant コントローラ名Controller
。
3.の「routingできていない」ときは、No route matches
。
4.の「コントローラのアクションがない」場合は、The action 'アクション名' could not be found for コントローラ名 controller
となります。
〔正解:1〕
問題4
フォームタグを使ってチェックボックスを作った。その際チェックボックスがオンになっているか検証するメソッドは以下のどれか。
- 1.accept
- 2.confirm
- 3.confirmation
- 4.acceptance
解答・解説
3.の回答は、2つのテキストフィールドが完全に一致するか検証するときに使いますので間違いです。1.と2.は使うことができないメソッドです。
〔正解:4〕