入力フォームで、チェックボックスがチェックされている時のみバリーデーションをしたくて、attr_accessorで仮想的な属性を設けて対処しようと思っているのですが、エラーが出てしまいます。
rb
1#モデル 2attr_accessor :last_name, :first_name, :option_check 3 4validates :name, presence: true, length: ... 5validates :email 6. 7. 8 9 10if option_check == '1' ⇦(ここで undefined local variable or method `option_check' for モデル (call 'モデル.connection' to establish a connection):Class が出てしまう) 11 validates :option_1, presence: true, length: { maximum: 30 } 12 validates :option_2, presence: true, length: { maximum: 50 } 13 . 14 . 15 . 16end 17before_validation :set_name 18 19def set_name 20 self.name = [last_name, first_name].join(' ') ⇦問題なく動作する 21end 22 23 24
上記のようにフォームでは他に、名姓を分けてのちに結合して一つの名前にするためにもatttr_accessorを使っていますが、こちらはlast_nameやfirst_nameで値を取得できていて、option_checkはうまくいかないという状況です。
以下、フォーム入力後の遷移先コントローラーでdebuggerでいろいろチェックしてみた結果です。ここでは値が返ってきます。
10: 11: 13: render 'new' if @model.invalid? 14: debugger => 15: end 16: (byebug) @model.option_check "0" (byebug) @model.last_name "山田"
どなたか原因がわかる方ご教授お願いします
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/02 06:13
2019/07/02 10:30
2019/07/03 08:43
2019/07/03 08:46