おぴよの気まぐれ日記

おぴよの気まぐれ日記

岡山やプログラミング、ファッションのこと、子育てや人生、生き方についての備忘録。

Rails

【Rails】調整さんのようなカレンダーを表示する

調整さんのようなカレンダーを作ると表示する内容が固定されていればtableタグなどで出来るが、 DBに保存された内容だとどうhtmlを組めば分からない。 調整さんってご存知ですか? 調整さん - 簡単スケジュール調整、出欠管理ツール ちょっとした打合せとか…

【Rails】DBに保存する前のデータを削除する方法は`delete`

オブジェクトをnewしたけど、条件に応じて内容が空になることがわかった。 この状態でsaveしちゃうとvalidationに引っかかるしオブジェクトを削除したい。 が、DB保存前なのでActiveRecordで削除する感じでdeleteはできないしどうすれば... そんな疑問に今日…

【Rails】enumerizeで定義したフォームのセレクトタグをアクション別に変える

今日やりたかったのは、新規作成時と編集時で同一カラムなんだけどセレクトタグに表示する内容を変えたいってのがあった。 編集の場合は色々な条件があって変更されると困るってのがあったので、悩んでたんだけど結構簡単に出来たのでその方法を紹介します。…

【Rails】営業日を考量して日付を操るGem business_time

回答期限に応じて何かを処理するって時に営業日を考慮したい時があり色々調べているとスンバラシイですね。 business_timeっていうgemがあったので簡単な使い方を紹介します! 導入方法 使い方 日付の操作 営業日チェック 注意点 Timezoneはきちんと設定しま…

【Rails】データが1件でもあるかどうかチェックするには`Model.exists?`

Ruby on Railsでデータベースにデータが存在するかどうかチェックしたい場合があると思います。 そもそもデータがあるかどうか知りたい時 ログインしたユーザーが管理者ユーザーがどうかをチェックしたい そんな時はModel.exists?()を使いましょうって話です…

rake db:migrationがどこまで実行されてるのか確認したり戻したり

あるデータベースのカラムを追加したくと色々やっていたら、今どんな状況なのか良く分からなくなったので整理する。 migration実行状況確認 $ rake db:migrate:status Running via Spring preloader in process 1796 database: hogehoge Status Migration ID…

Gemfile通りにherokuが'bundle install'してくれない!

何が起こってるのか herokuではどうやら、 sqlite3は使えないそうなので本番とローカル環境でDBを切り分けるようGemfileを更新しました。 # Gemfile source 'https://rubygems.org' gem 'rails', '~> 5.0.0', '>= 5.0.0.1' gem 'pg' gem 'puma', '~> 3.0' ge…

TwitterやFacebookなどのSNSボタンを5分で追加する

Railsアプリを作る時、SNSのシェアボタンを設置するにはどうすれば良いのでしょうか? Rails social-share-button gemのイメージ画像 今回たまたまsocial-share-buttonというgemを見つけたので、それを使ってみました。 https://github.com/huacnlee/social-…

css上で動的に値の変更はできないけどhtmlに書けばできる

cssに設定する値を動的に変更するとかできないのか?なんて思ったことないでしょうか? 例えば、 ユーザー毎にボタンの色や背景色などを変更したい! 条件に応じてbackgroundに画像を入れたり、差し替えたりしたい! 結論から言うとできます! ただcssでは出…

ActiveJobを使った非同期処理の方法

Ruby on Railsを使って非同期で処理する方法 ActiveJobについてです。 ざっくり手順 generateでjobファイルを作成する jobをキューに登録する jobを実行する generateでjobファイルを作成する コマンドで $ bundle exec rails g job hoge_job 手作業で jobs/…

Ruby on Railsでcsvダウンロード機能の作り方

Ruby on Railsを使ってcsvファイルのダウンロード機能を作りたくて調べました。 大枠の手順 routesを設定 csvを受け付けるアクションをコントローラーに設定 対象データを抽出しcsvフォーマットのファイルへ渡す CSVデータを作成する 画面にダウンロードボタ…

【Rails】Strong Parametersで`param is missing...`エラーになる

こんちには。opiyoです。 ActionController::ParameterMissing in ImagesController#create param is missing or the value is empty: image def image_paprams params.require(:image).permit(:name, :picture) end end こんな感じでエラーになるのだが、pa…

【Rails】ファイルのフルパス、ファイル名を取得する

過去データとかでファイルを一括で読み込みたい場合で使える技です。 > files = Dir.glob("/Users/taku/rails/gist/test/*.xls") => ["/Users/taku/rails/gist/test/1.xls", "/Users/taku/rails/gist/test/2.xls", "/Users/taku/rails/gist/test/3.xls", "/U…

【Rails】XX件以上登録できないようにする独自バリデーションメソッドを設定する方法

こんばんは。opiyoです。 Railsアプリで「XX以上は登録できない!」というバリデーションを設定したかったので、やり方を調べてみました。 やりたいこと Keywordというテーブルにデータを登録する処理で、5つまでしか登録できないようにバリデーションを設定…

【Rails】ファイルをDBに保存する方法

ファイルを保存する方法はRailsチュートリアルとかでは、CarrierWaveというgemを使う。 だがちょっとしたアプリとか作りたい時には、DBに保存した方が都合がいい時もあるはず。 gemを使う方法は別の機会でまとめるとして、今日はDBに保存する方法を。 モデル…

【Ruby】文字列をDate(日付)に変換する時は桁数を意識しないと違う日付になる

文字列が意図しない日付になる? 売上などのデータでcsvファイルを連携して取り込むってのはよくある話だと思うのですが、単純に文字列結合して変換すると違った日付になったりエラーになったりするので気をつける必要がある。 > require 'date' => true >Da…

【Ruby on Rails】`rails db:reset`だと変更/追加したmigrationファイルが反映されない!

rails db:reset テーブル削除 → schema.rbの情報を元に作り直す rails db:migrate:reset テーブル削除 → 作成 → db:migrateが実行される つまり、migrationファイルを作成した後にそのファイルを修正した場合はdb:resetしても反映されない! 調べてみたら、…

エンジニア=プログラマーは夢のある職業であることを痛感した1年だった

こんちにちは。opiyoです。 今日から新年初出社ですが、世の中的には今週まで休みの人も多いですかね。 僕も30歳目前。外の世界の変化が激しい中、大切な20代も残りわずか。 普通に過ごしているだけでは当たり前のように生きていくことすら厳しい、そんな時…

30歳まで残り2年の僕は人生を変えるためにRailsチュートリアルを始めようと思う(番外編:シェア=リツイート機能の拡張)

こんにちは。opiyoです。 今回は、番外編:シェア=リツイート機能の拡張をやっていきます。 マイクロポストにリツイートアイコンを表示して、「シェア=リツイート」できるようにします。 ではでは、早速行ってみましょう。 やること 仕様 【できたこと】 リ…

30歳まで残り2年の僕は人生を変えるためにRailsチュートリアルを始めようと思う(番外編:いいね機能の拡張)

こんにちは。opiyoです。 今回は、番外編:いいね機能の拡張をやっていきます。 マイクロポストにハートアイコンを表示して、「いいね」できるようにします。 ではでは、早速行ってみましょう。 やること 仕様 「いいね」機能を実装するに当たって、ざっくり…

30歳まで残り2年の僕は人生を変えるためにRailsチュートリアルを始めようと思う(番外編:検索機能の拡張)

こんにちは。opiyoです。 今回は、番外編:検索機能の拡張をやっていきます。 ユーザーとマイクロポストをあいまい検索できるような機能を各画面に追加します。 ではでは、早速行ってみましょう。 ユーザー一覧に名前をあいまい検索できる # app/views/users…

プログラミング初心者でも出来た!ビットコイン自動売買システムをRubyで作る

こんにちは。opiyoです。 今日は私が入会している人生逃げ切りサロンのメンバーである迫 佑樹さんが Rubyで作る! ビットコイン自動売買システム の作り方を解説した動画について紹介させてもらいます。 この動画の最大の魅力はプログラミング経験が全くない…

Railsチュートリアルの環境はCloud9で決まり!

こんにちは。opiyoです。 Webアプリケーションの勉強をする際に先ず引っかかるので環境構築ではないでしょうか。 参考書や記事の通りやってるのにエラーになる。 ググって色々やってみる 解決できない 辞める これ凄いもったいないですよね。せっかく何かを…

【完全版】Active Record の基礎!

こんにちは。opiyoです。 今日はRailsの勉強をしていると出てくる「Active Record 」について、勉強したいと思います。 User.first User.find(1) User.update User.create!(hoge: hoge) こんな奴らですね。 ではでは早速、行ってみましょう。 Active Record…

【完全版】Railsチュートリアルで人生を変える28歳の夏(演習問題の回答あり)

こんにちわ。opiyoです。 改めてちゃんと書こうと思いますが、一先ず今日。ってかさっき今月中を目標にしていたRailsチュートリアル14章までのまとめ記事をアップしました。 せっかくなので、まとめポストを書こうと思います。(今月の目標記事数に届かない…

30歳まで残り2年の僕は人生を変えるためにRailsチュートリアルを始めようと思う(第14章 完!)

こんにちは。opiyoです。 今回は、第14章をやっていきます。 第14章はフォロー、フォロワーする機能を追加します。 なんとなんと最後の章までやってまいりました。 ではでは、早速行ってみましょう。 14.1.1 演習 データモデルの問題 (および解決策) 14.1.1.…

30歳まで残り2年の僕は人生を変えるためにRailsチュートリアルを始めようと思う(第13章)

こんにちは。opiyoです。 今回は、第13章をやっていきます。 第13章はユーザーが短いメッセージを投稿できる「マイクロポスト」機能を追加します。 やっとログイン関係の処理を抜けて、機能拡張ですね! ではでは、早速行ってみましょう。 13.1.1 演習 基本…

30歳まで残り2年の僕は人生を変えるためにRailsチュートリアルを始めようと思う(第12章)

こんにちは。opiyoです。 今回は、第12章をやっていきます。 第12章はパスワードを忘れた時の再設定方法です。 どうやら難しそうですが、早速行ってみましょう。 12.1.1 演習 PasswordResetsコントローラ 12.1.1.1 <問題>この時点で、テストスイートが gre…

30歳まで残り2年の僕は人生を変えるためにRailsチュートリアルを始めようと思う(第11章)

こんにちは。opiyoです。 今回は、第11章をやっていきます。 第11章はメールを使ってアカウントを有効化する方法です。 どうやら難しそうですが、早速行ってみましょう。 11.1.1 演習 AccountActivationsコントローラ 11.1.1.1 <問題>現時点でテストスイー…

30歳まで残り2年の僕は人生を変えるためにRailsチュートリアルを始めようと思う(第10章)

こんにちは。opiyoです。 今回は、第10章をやっていきます。 第10章はユーザー登録以外の「表示」「編集」「削除」の方法です。 10.1.1 演習 編集フォーム 10.1.1.1 <問題>先ほど触れたように、target=“_blank"で新しいページを開くときには、セキュリティ…