2019-08-01から1ヶ月間の記事一覧

環境変数はどう設定してる?Railsで簡単に設定できるdotenvの使い方

Railsに限らずDB設定値やAWSのアクセスキーなど、アプリケーションを作る上で定数で持たせたい値が存在する。 こういった値はコードに直書きするのでは無く、環境変数として設定するのが基本的な考え方。 そこで今回は環境変数を設定する上でとても便利なgem…

n対nの関係で中間テーブルにid以外のカラムを持たせ登録・編集を行う方法

Ruby On Railsでのアソシエーションの応用のお話。 下記のようなUserモデルとGroupモデルにn対nの関係を持たせ、UserにGroupの所有者情報を持たせたい時、中間テーブルに所有者情報を持たせた方がDB設計的になんとなく綺麗な気がする。 しかし、通常中間テー…

RailsでBootstrapのflashメッセージを良い感じに表示してみた

アプリケーションを作るさいに必ず多用するflashメッセージですが、これをBootstrapを使うと良い感じのデザインで作れます。 今回はhelperも使ってcssも切り替えながら、flashメッセージ部分を部分テンプレート化してみました。 コード まずはflashメッセー…

FactoryBotで中間テーブルのテストデータを用意する方法

FactoryBotでテストデータの中間テーブルを用意する方法がわからず、少し詰まったのでメモ。 想定 想定としてUserモデルとGroupモデルが存在し、n対nの関係であるとする。 中間テーブルのモデル名はGroup_userとする。 app/models/user.rb class User < Appl…

seedデータってどうやって入れる?seed-fuを使った便利なSeedデータ挿入法

railsアプリの初期データを入れ方として初期段階ではrake db:seedがあります。 でも、繰り返し使った場合同じデータが登録されたり、登録するデータの選別が出来ません。(コメントアウトを使えば出来るけどめんどくさくてやってられない) ここでseed-fuを…

似ているようで実は違う!?dependent: :destroyとdependent: :delete_all

親モデルに紐付く子モデルがある場合、has_many: で関連付けしただけだと親モデルを削除すると子モデルが孤立してしまうため、通常はdependentオプションでdestroyを指定し、親モデルを削除するとそれに紐付く子モデルも削除されるように設定する。 しかし、…

【ActiveAdminにご用心】ActiveAdmin導入時のassetファイル汚染防止法

管理画面を簡単に作ることの出来るactiveadminですが、そのまま何も考えずに導入して通常ページのデザインが崩れてしまいました。 原因 これはactiveadminのCSSやJavascriptが管理画面以外でも読み込まれる事が原因です。 rails generate active_admin:insta…