niki12260714の日記

フリーランスのITエンジニアの呟き。

配布のBootstrapテンプレートをRailsに導入する

世の中には親切な人が多いもので、格好いいBootstrapのテンプレートを配布している人がいます。有料のものなんかサポートも付いていたりして、デザインセンスが壊滅的な人にはありがたい世の中です。で、このテンプレートをRailに適用するにはどうしたらいい…

MySQLでソートを任意に制御する方法

文字列でソートする場合、普通にやると「AaBbCc」と並びますが、これを「ABCabc」とソートした場合のやり方。MySQLはソートにcaseを使えるので、それを利用します。 ORDER BY CASE WHEN ソート文字列 REGEXP '[A-Z]' then 0 WHEN ソート文字列 REGEXP '[a-z]…

AWS Cloud9 + Rails + MySQLで絵文字を扱う

参考にしたのはこちら。 qiita.com というわけで、MySQLの文字コードを確認するわけですが、そっちは既に「utf8mb4」でした。でもrailsの方で文字コードを「utf8」にしていたので、rake:dbした時にutf8でテーブル作ってしまっていたようなので、これを修正し…

AWS Cloud9でMySQLに乗り換える

諸事情により、ポスグレからMySQLにDBを変更することになり、開発環境のDBを変えることになりました。その手順です。 ※2018/7/30現在、AWS Cloud9には、MySQLが標準でインストールされているので、インストール作業は飛ばします 【MySQLにデータベースを作る…

deviceでtwitter連携時に「raise OAuth::Unauthorized, response 403」となった時の対応方法

deviceの使い方はこちら参照。 qiita.com で、この通りに進めて、サインアップページの下に出てくる「Sign in with Twitter」をクリックすると、 「raise OAuth::Unauthorized, response 403」 となってしまいました。ぐぐると、「Twitterの設定で、Callback…

独自定義のモデルを元にしたformのvalidatesを日本語化

変にハマったので、メモ。内容はここの続きです。あと、大前提として、「i18n」を入れて、日本語化の準備が出来ていることが必須です。 niki12260714.hatenablog.com この方法で戻ってくるエラーメッセージを見ると「col aは必須です」のように、モデルに定…

Active Modelを定義し、form_forを使用、validatesでエラー処理までの流れ

画面の入力項目が一つのテーブルだけではないというのはよくあるパターン。そうすると、form_forが使えないので、form_tagを使うことになります。が、そうするとvalidatesの処理とかセオリー通りにいかないし、form_forの方がBootstrapでごにょごにょするの…

railsで二つのセレクトボックスを連動させる

都道府県のセレクトボックス選ぶと、隣にある市町村のセレクトボックスの中身が変わる。そういう奴をrailsで作る方法です。ネットに沢山情報がありますが、自分が分かりやすかった方法がこちら。 【プログラムの動き】1.セレクトボックスにonchangeイベント…

AWS Cloud9でpumaを再起動

参考にしたのはこちら。 qiita.com ターミナルで「ps ax」を打つと、これが出てきました。 AWSの場合、「puma x.xx.xx~」を殺せばよい模様。「kill -9 6109」でpumaが終了するので、「rails s -b $IP -p $PORT」を打てば再起動する。 ※「server.pid」ファイ…

【調査中】railsでleft_joinsするモデルに対して条件を追加する方法

こちらと同じことをしたくて調べています。 teratail.com 自分の場合、まさに外部結合する方のテーブルに条件を追加するSQLを発行したいのです。 SELECT A.id, B.idFROM ALEFT OUTER JOIN B ON A.id = B.a_id AND B.col = (動的な値)WHERE A.col = (なんかの…

railsで親子モデルのそれぞれに条件設定してn+1問題を解決する方法

親子のモデルで結合する時、joinsかincludesを使うわけですが、取得結果表示で、「子供のループで回したい」となると、joinsだとn+1問題が発生します。なので、includesをしたいのですが、includesは「親に対してSQL実行」→「親の結果をもとに子のSQLを実行…

railsで親子孫ひ孫までをincludesする

自分メモ。沢山ある関連モデルをincludesする場合。 親.where(条件文).all.includes(子: [孫: :ひ孫])

子モデルで条件を設定し、includesする場合

今でも鮮明に覚えているんですが、初めて先輩に、業務で組んだコードをレビューしてもらった時。「なんでSelectのループの中で、またSQL発行しているの?」はい、効率とかリソースとか考えられない超初心者でした。それ以降、「SQL発行は極力1回で行う、ルー…

railsでAjax通信を行い、通信結果を元ページの指定位置にレンダリングする

色々方法はあるみたいですが、自分が理解しやすかった方法。 1.ViewにAjax通信するアクションと、通信結果を受ける個所を記述 この例だと、「groupsコントローラーのsearch_memberアクション」がAjax通信行うことになります。この時に「remote: true」を指定…

親子孫の3つのテーブルを関連付けてデータ取得

A,B,Cというテーブルがあって、それぞれ親→子→孫という関係とします。 Aモデル:has_many:bs(複数形) Bモデル:belongs_to:a(単数形)has_many:cs(複数形) Cモデル:belongs_to:b(単数形) ここで、cモデルにあるカラムをwhere句にして、Aモデルの値を…

親子関係にあるテーブルに一度にデータを保存する

親テーブルにデータを作ったら、そのidを使って子テーブルにもデータを入れたい場合がありますよね。というのをやってくれるのが、buildです。 まず最初に、各モデルに親子関係を記述します。※Aの子供がB、Bの子供がCとする Aモデル:has_many:bs(複数形) …

AWS Cloud9でPostgreSQLに対しrake db:migrateが失敗する

ここら辺、自動でやってくれるDBとかで開発していたんで、知らないから躓いたところでした。前回の記事の続きです。 niki12260714.hatenablog.com ここの記事で、「confファイルが見つからなかった」とありますが、ここが問題でした。 migrateのファイルを作…

AWS Cloud9でPostgreSQLを使ったrailsプロジェクトを立ち上げる

画面設計、DB設計に着手したんで、本格的に開発環境を整えていきます。ということで、sqliteではなく、PostgreSQLを使って開発することになりましたので、その設定。例によって、自分メモです。参考にしたのはこちら。 qiita.com お手本通り、コマンドを打っ…

Gemfile編集後のbundle updateでコンフリクト発生時の対応

Gemfileに新しいgemを追加して、「bundle update」を叩くとエラーが出ました。 『Bundler could not find compatible versions for gem "actionview"』 ググってみると、バージョンが競合してますよ、ってことらしい。「gem list」で今入っているgemのリスト…

AWS Cloud9で編集してからgithubへpushするまでのコマンド

gitを使い慣れていない自分のコマンドメモとして。 1.ブランチを切る※AWS Cloud9のbashで、今自分がいるブランチがmasterブランチであることを確認してから実施「git checkout -b "ブランチ名"」→実行すると指定したブランチ名に切り替わる ※この後にコード…

AWS Cloud9でgithubからcloneしたRuby on Railsを動かす

当然っていえば当然なんですが、cloneしてきただけだと動かないわけで。こちらを参考にして、動作させるべく四苦八苦。 tyoshikawa1106.hatenablog.com こちらにある通り、「gem install bundler」を実施。こっちは成功。なので、次に「bundle install 」を…

AWS Cloud9にgithubからcloneしてくる

これで合っているかいまいちわからんのですが、githubにある自分のレポジトリを、AWS Cloud9にクローンしてきました。参考にしたにはこちら。 docs.aws.amazon.com Cloud9にgit環境の導入のため、以下のコマンドをそれぞれ叩きます。「sudo yum -y update」…

AWS Cloud9でRuby on Rails開発環境を構築する(とりあえず完成)

どうにもCodeStarからCloud9が作れないので、これはCloud9でrubyインストールした方が早いな、と判断。※きっと英語がすらすら読めればエラー解読できると思うんですが、出来なかった…… 多分、なんかキーが足りてないor権限設定をしてないのが問題という気が…

AWS Cloud9でRuby on Rails開発環境を構築する(途中経過)

今週からプログラム塾に通っています。通うって言っても、オンライン学習ですけれど、侍エンジニア塾さんのお世話になっています。 早速、コーチの方と面談をし、作るアプリについて概要をお話しました。そちらはまた別途。そこで宿題が出されまして、「Amaz…

Visual Studio CodeでGo言語のHello World!

初心者過ぎて誰も書かないと思うんで、自分メモ。Visual Studio Codeでgo言語のプログラムファイルを作成して動かす方法。 開発環境を構築したら、任意のフォルダを作って、Visual Studio Codeのエクスプローラーで開きます。そしてファイルの追加で、「(フ…

Go言語メモ

ちょっとGo言語を触ってみようと思って、メモを取っています。※開発環境の設定って最初の1回しかやらないからほぼほぼ覚えていなくて、後で困ることもあるんで、メモ取りです。参考にしたのはこちら。 qiita.com 既にVisual Studio Codeは入っているし、git…

Githubを使ってみました

最後の部分がいつまでもできなくて(SQLは思い浮かぶんですが、rails的に実装するのがよく分からず……)、でもこのままぐずぐずするのもなぁ、ということで、とりあえず出来ている部分のコードだけGithubに上げてみました。 github.com セキュリティ警告出て…

Ruby学習23日目:Betweenの書き方

今月はイベント三昧でこっちにあんま手を付けられなかった……。それが分かっているから先月中になんとかしたかったんですが、まぁ仕方ない。 さて今日からブラックリストの編集。ブラックリストに載る人は「引き取りに来ていない人」、あるいは「引き取り時に…

Ruby学習22日目:#{table_name}の利用

二つのテーブルをjoinさせて値を取得してくる場合、where句でidカラムを指定すると、「どっちのテーブルのidカラムなんだよ(怒)」と怒られます。なので、前に調べたところ、「arel_table」を使うのが良いみたいだったのですが、今日さらに調べたら、「これ…

Ruby学習21日目:gemパッケージのインストールと利用

イベントが終わったので、再びrailsと格闘。次に実現するのは、取り置きしたアイテムを引き取るために必要なQRコードの表示です。QRコードをいわゆる引き取り証明のように使おうというわけです。予約者はQRコードを見せるだけ、サークル側はQRコードを読み取…