私はレール上のパラメータの存在を確認しようとしています。これは、このパラメータが存在しない場合、私はここに レールモデルの検証 - 未定義のメソッドエラー
は、クライアントから送信されたサンプルパラメータリストでエラーをスローするレールを希望、理想的にはUser.rb
validates :terms_of_service, presence: true
validates :privacy_policy, presence: true
ためのコードスニペットで
Parameters: {"username"=>"f", "email"=>"[email protected]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "confirm_success_url"=>"http://localhost:4000", "config_name"=>"default", "registration"=>{"username"=>"f", "email"=>"[email protected]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "confirm_success_url"=>"http://localhost:4000"}}
ただし、レールには以下のエラーが発生します
NoMethodError (undefined method `terms_of_service' for #<User:0x007f16d402e788>):
私は実際にパラメータをテストしているときにはterms_of_service
メソッドがあるべきだと思いますか?それ以外の列の属性に役立ちます
attr_accessor :terms_of_service
希望の場合でも
'terms_of_service'はUsersテーブルのカラムに対応するパラメータであり、ActiveModelはその値を取得するメソッドを作成します。これは自動であり、そこにない場合、おそらく列もそこにはありません。 'db/schema.rb'を投稿してください。 –
ああ、私は、dbに対応する列が必要であることを知っていませんでした。私は、テーブルにユーザを保存する前に、両方のパラメータ(tosとprivacy)が真であることを確実にすることを望んでいました。私は列をしたくない場合、私はモデルテーブルでbefore_commitフックを使用して、パラメータが存在することを確認する必要があると仮定していますか? – Kannaj
またはterms_of_serviceをattr_accessorとして作成できます。 –