おぴよの気まぐれ日記

おぴよの気まぐれ日記

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

【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…

Googleフォームで回答数と回答された合算を表示する方法

前回も似たような話題を取り上げたのですが、Googleフォームを使って回答数を表示させる方法です。 opiyotan.hatenablog.com ざっくり手順紹介 数値を入れる項目を作成 スクリプトエディタを起動する 入力された数をカウントして説明欄に表示するスクリプト…

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…

Googleフォームで先着順=回答数を制限する!を10分で実現する

Googleフォームのアドオン「formLimiter」の画像 アンケートを行いたい時に便利なのが「Googleフォーム」。 簡単にアンケート機能が実現できるし、集計も簡単にできるので大変便利なのですが 先着10名様限定! みたいな回答数に上限を持たせるような機能を実…

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…

Docker For MacでPostgreSQL9.5系の環境を作ってみた!

こんばんは。opiyoです。 brewでインストールするとなんだかPostgreSQL9.6系がインストールされてしまうのだけど、本番環境と同じバージョンをローカルに使いたくてウズウズしていたのだが... Docker使えば良いじゃんってアドバイス貰ったので教えてもらった…

【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…

【Ruby】配列の中身が重複しているかをチェックする方法(select、find)

csvのデータを取り込み別のcsvへ吐き出す処理をしていたのですが、値が重複していることに気がつきました。 こんな感じ。 data = [] inport = CSV.read("./inport.csv") inport.each do |c| data << c end CSV.open("./export.csv", "w") do |export| data.e…

【bootstrap3】ナビゲーションバー(Navbar)で起きたレイアウト崩れと右寄せへの対応方法

こんばんは。opiyoです。 結論としては勝手な解釈をして余計なことしてた!に尽きるのだけど、同じようなハマり方すると時間もったい無いので共有です。 <header> <nav class="navbar navbar-inverse"> <div class="container-fluid"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbarEexample1"> </button></div></div></nav></header>

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

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

【Bootstrap】navbarの背景色、文字色の悩みはこれ一発で解決だわー

何か作る時bootstrapにお世話になることあると思うのですが、cssいじっただけだと何故か上手くいかない。 例えば今回のnavbarですね。 ナビゲーションメニューがかっこよく決まらないとモチベーションが全く上がらないので、いろいろ探していたらあったわー…

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

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

【Ruby on Rails】月の最初の日、最終日はどうやって取得する?

画面から入力された日付の月が何日までなのか取得する方法が分からなかったので調べてみました。 月の最終日 irb> Date NameError: uninitialized constant Date Did you mean? Data from (irb):9 from /Users/taku/.rbenv/versions/2.3.3/bin/irb:11:in `<main>' </main>…

【Rails】created_atとupdated_atへデータを登録する方法

過去データの取り込みで直接DBにデータを入れる際にcreated_atとupdated_atにはどうやって値をセットすれば良いのか分からなかったから調べてみた。 結論としてはTimeWithZoneクラスが使われているからTime.zone.nowすれば良いっぽい。 > Shop.first.created…

【Rails環境構築】bundle installでエラーになる時の対処法!

こんにちは。opiyoです。 昨日まで普通に動いていたのに 教科書、本と通りに設定しているはずなのに 何もしてないのに動かないぞー って経験無いでしょうか? 僕も昨日新しくMacが手に入ったのでRails環境をローカルに構築して今作っているRailsアプリを動か…

初心者でも30分で出来た!MacにRails開発環境を作ってみた

こんばんは。opiyoです。 プログラマの勉強をしていて最初につまずくポイントは環境構築じゃないでしょうか? 今はCloud9とかWeb上で勉強できるサイトなどが当たり前になってきているので、作るきっかけは無いかもしれないですがエンジニアとして働いていく…

【Ruby on Rails】スクレイピングで簡単にmeta情報を取得するgem metainspector

こんばんわ。エンジニアに夢を描くopiyoです。 最近はずっとスクレイピングについて触れることが多いのですが、こんな経験ないですか? ブログ書く時とかurl貼り付けるだけで引用文が作成されるけど、あれどうやってんだ? まさにこういう奴↓↓ opiyotan.hate…

【Rails】NokogiriじゃなくてMechanize gemで簡単スクレイピング!

先日Nokogiriを使ったWebスクレイピング方法を紹介しましたが、もっと簡単に出来るgemを見つけたのでご紹介。 opiyotan.hatenablog.com その名はMechanize 利用する準備 gemのインストール gem 'mechanize' $ bundle install スクレイピング先のサイト情報を…

【Ruby】Nokogiriを使って「はてなブログ」をスクレイピングする!

こんばんは。エンジニアになれるか不安なopiyoです。 今日はWebサイトの情報を取得することが出来る、Webスクレイピングという技術をRubyでやってみます! Webスクレイピングとは Webサイトの情報を取得する技術ってイメージですが、wikipediaでちゃんと調べ…

【Ruby on Rails】決まった時間に自動で処理してくれる`whenever`の使い方!

こんばんは。早くエンジニアになりたいopiyoです。 以前rssを取得する方法について、まとめて見たのですが今日はそれの発展させたいと思います。 opiyotan.hatenablog.com 時代は変わる。そして情報も常に変わる。 だから、rss情報も常に最新の情報を自動で…

【Bootstrap】ナビゲーションメニューをセンタリングして均等化する方法!

こんばんは。opiyoです。 よくあるナビゲーションメニューですが、センタリングされてないとダサいですよね。 bootstrapのnavのサンプルを、そのままコピペして試してみたのですが センタリングされない 文字数に応じた領域になってしまいかっちょ悪い って…