いろいろ探したのですが、ないようです。
きっかけはAPIリクエスト
APIサーバーをRailsで作っている時にURLクエリパラメータで、GETメソッドをbooleanを送信してました!
こんな感じです。
192.168.33.20/api/v1/products.json?liked=true&product_categories=1,2
controllerで処理する時にprams[liked]を判定するのに、いちいち正規表現で判定しないといけないみたいです。paramsでとるとstring型になっちゃうみたいですね。。
POSTリクエストはboolean型でOK
POSTで投げた場合は、もちろんboolean型でOKです。
default valueを与えた時のRailsの挙動
logを見た時に知ったのですが、default valueと同じ値を投げた時はinsert文の該当する部分が投げられていなく、余計なSQLが投げられないようになっているんですね。そこらへんも自動で判定してくれるRailsはすごいですね。
Parameters: {"name"=>"test 1", "profile"=>"test", "email"=>"user1hogehogehoge@test2.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "sex"=>"male", "birth_date"=>"2000-01-01 00:00:00", "agreement"=>"1", "telephone_number"=>"000-1111-2222", "address1"=>"住所1", "address2"=>"住所2", "status"=>"active", "push_notice"=>true, "pay_type"=>"CreditCard", :user=>{"name"=>"test 1", "profile"=>"test", "email"=>"user1hogehogehoge@test2.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "sex"=>"male", "birth_date"=>"2000-01-01 00:00:00", "agreement"=>"1", "telephone_number"=>"000-1111-2222", "address1"=>"住所1", "address2"=>"住所2", "status"=>"active", "push_notice"=>true, "pay_type"=>"CreditCard"}} # "push_notice" => trueが投げられている Unpermitted parameter: status User Exists (3.1ms) SELECT 1 AS one FROM `users` WHERE `users`.`email` = BINARY 'user1hogehogehoge@test2.com' LIMIT 1 (0.1ms) BEGIN CACHE (0.0ms) SELECT 1 AS one FROM `users` WHERE `users`.`email` = BINARY 'user1hogehogehoge@test2.com' LIMIT 1 (0.3ms) SELECT COUNT(*) FROM `users` WHERE `users`.`authentication_token` = 'A8Wxby3Nvmxzgdzb1T7F' SQL (0.5ms) INSERT INTO `users` (`email`, `encrypted_password`, `name`, `agreement`, `profile`, `sex`, `telephone_number`, `birth_date`, `address1`, `address2`, `pay_type`, `status`, `authentication_token`, `created_at`, `updated_at`) VALUES ('user1hogehogehoge@test2.com', '$2a$11$wgkia6F9Mj4M3IR4BGnMTOrEwfsIXYNZbUxfleNSCsVeBNiupE/BO', 'test 1', 1, 'test', 1, '000-1111-2222', '2000-01-01', '住所1', '住所2', 0, 1, 'A8Wxby3Nvmxzgdzb1T7F', '2016-08-24 07:45:58', '2016-08-24 07:45:58') # insert文ではpush noticeがない!
コメントを残す