Fakerの導入(Ruby on Rails)
一覧ページを開発環境で確認するために導入
Gemfileに追加しbundle install
group :development, :test do gem 'faker' # <= 追加 end
seedファイルに対応コードを記述しrails db:seed
10.times do User.create( name: Faker::Name.unique.name, email: Faker::Internet.unique.email, password: '12345678', password_confirmation: '12345678' ) end
※.unique
で一意のダミーを作成できる。
プロフィール更新時のエラー対応
地味に5日目
(メンチキッターにユーザー機能追加中)
ユーザープロフィール編集時に入力内容が反映されずロールバックされる
[1] pry(#<ProfilesController>)> @user #<User:0x0000000107ad47d0> { :id => 1, :name => "test", :email => "test@example.com", :crypted_password => "$2a$10$4/2YHnQjZ9UaYz6JNNmUG.g0TfERU4MFgOjNLayqtKaZHkZrdkz3u", :salt => "D7xFwzvdbdDYBQZy2JUf", :created_at => Sun, 23 Jan 2022 22:20:05.190854000 JST +09:00, :updated_at => Sun, 23 Jan 2022 22:20:05.190854000 JST +09:00 } [2] pry(#<ProfilesController>)> user_params { "name" => "test2", "email" => "test@example.com" } [3] pry(#<ProfilesController>)> @user.update(user_params) TRANSACTION (4.2ms) BEGIN ↳ (pry):5:in `update' User Exists? (3.2ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = $1 AND "users"."id" != $2 LIMIT $3 [["email", "test@example.com"], ["id", 1], ["LIMIT", 1]] ↳ (pry):5:in `update' TRANSACTION (2.8ms) ROLLBACK ↳ (pry):5:in `update' false
エラーメッセージを確認したらパスワード書けよと言われてるけど別に書きたくない
[7] pry(#<ProfilesController>)> @user.errors.messages { :password => ["を入力してください"] }
モデルに余計な一文があったので削除したら解決◎
validates :password, length: { minimum: 3 }, if: -> { new_record? || changes[:crypted_password] } validates :password, confirmation: true, if: -> { new_record? || changes[:crypted_password] } validates :password_confirmation, presence: true, if: -> { new_record? || changes[:crypted_password] } validates :email, uniqueness: true, presence: true validates :password, presence: true # <= コイツ要らんかった validates :name, presence: true, length: { maximum: 255 }
i18nの小技
金曜日なので気の向くままカタカタ💻
モデル名.human_attribute_name (:カラム名)
ActiveRecord::Base のクラスメソッド
内部的に I18n モジュールを利用してくれる
config/locales配下のja.ymlに定義してある翻訳内容を良しなに解釈してくれる
(良しなって言葉、この業界でよく聞くよね)
そんな感じで
100日記事4日目完了
variantsによるテンプレートの切り替え
メンチキッター作っててPCでの見え方とスマホからの見え方は変えて行こうと思ってるのでvariantsの機能は覚えとこう、今の追加機能実装してUI整理するときに使いたい。。
接続端末によってPCとは別のテンプレートを表示できる
index.html.erbだったものがindex.html+mobile.erbのようにしてテンプレートが選択
ざっくりメモ✍️
# app/controllers/application_controller.rb class ApplicationController < ActionController::Base before_action :detect_mobile_variant private def detect_mobile_variant request.variant = :mobile if request.user_agent =~ /iPhone/ end end
<!-- app/views/books/show.html+mobile.erb --> <h1>本の情報(for mobile)</h1>
メンチキッターリリース
細々とブログ再開
1月11日(良い日)にガン飛ばしアプリ「メンチキッター」をリリースしました!
良い顔して過ごす大人達へ、たまには悪ぶってみたい少しやんちゃな想いを叶える場所を提供するサービスです◎
現在、診断モード・訓練モードを実装済みで今後も新たなモードを追加予定です☆
(診断結果は東京リベンジャーズをオマージュしているので、好きな方は更に楽しんで貰えるかなと思います!)
引き続き育てて行こうと思うので、進捗をブログにつらつら書き残していこうかと思います! (どこかでがっつりQiita記事を更新しようかと。。)
JSON形式のデータをレスポンスさせる✍
def index user = { id:1, name: "hoge", age: 32 } render json: user end
該当URLにアクセスすると、、
{"id":1,"name":"hoge","age":32}
が表示される。
render json: user
↑この部分
render
メソッドにjson
オプションを指定すると、指定オブジェクトをJSON形式のデータでレスポンスが返される。
参考
【Rails】 JSON形式のデータを返却する方法とは? | Pikawaka - ピカ1わかりやすいプログラミング用語サイト