MENU

rails

本番環境でDBがDROPできない

環境 aws docker rails rds(postgres) dropを実行したらエラーが RAILS_ENV=production bundle exec rake db:drop rake aborted! ActiveRecord::ProtectedEnvironmentError: You are attempting to run a destructive action against your 'production' da…

Rails リンク先にフラグを持たせる

link_toの引数に値を渡すだけ <%= link_to "登録", new_company_registration_path(ref: "root")%> こんな感じでリクエストを送ってくれる http://localhost:3000/company_registration?ref=root コントローラー側でパラメーターを受け取れる [1] pry(#<Companies::RegistrationsController>)> pa</companies::registrationscontroller>…

Rails エラーメッセージを入力項目毎に実装

こんな感じに 前提情報 Productモデルにname, email, ageカラムを作成 presece: trueのバリデーションを設定 修正内容 1.エラーを表示するパーシャルを作成 2.パーシャルに引数を渡す。(attributeは :nameなどの項目の情報が入っています。modelには produc…

Rails Slack通知 webhook

仕組み webhookとは? qiita.com この記事を参考にすると、外部のサービスを、指定のエンドポイント(url)を叩くと利用できると言う事らしい(さらっと読んでるので、違うかも) 通常外部のサービスをAPI利用する場合、tokenやkeyを取得してできるけど、 ur…

.ruby-versionと Gemfileのrubyバージョン

rubyのバージョンを変更したい場合 .ruby-versionのrubyのバージョン指定と Gemfileのrubyのバージョンを同じにしないと変更できない 事象 本番環境でrubyのバージョンをruby 2.6.3 ローカル2.4.0で運用していたので、本番環境でbundle ができなかった。 Gem…

Rails flash機能

シンプルなFlash機能 controoller def create @book = Book.new(book_params) if @book.save flash[:success] = "保存できました" redirect_to パス else flash[:failled] = "保存に失敗しました" redirect_to パス end end view <% flash.each do |key, val…

Rails N + 1 INNERJOIN

N + 1とは? 関連するレコードを無駄に見に行ってしまう事 具体例 前提 UserとAirticleで1対多の関係 controller AirticleController def index @airtcles = Airticle.all end view <% @airtcles.each do |airtcle| %> <%= airtcle.user.email%> <% end %> …

Rails 500エラー 例外処理

500エラーの画面 恥ずかしながら本番での500エラーは 、Rails の500html.htmlだったのか、 開発環境だと、赤い画面でエラーメッセージが出て、本番の場合にこの画面がでるからnginxの画面なのかとずっと思ってた。。。。 public/500html.htmlのファイルだっ…

Rails flashをヘルパーで

flashを汎用的に書いてみる module ApplicationHelper def flash_messages flash.each do | flash_type, message| concat(content_tag(:div, message, class:"alert-message #{flash_type}")) end end end application.html %body = render 'layouts/header'…

Rails 保存

rails データ保存 def create @post = Post.new(post_params) if @post.save flash[:success] = "保存に成功" redirect_to posts_path else flash[:error] = "保存に失敗" redirect_to new_post_path end end 例外などについては、こちらの動画で解説されて…

Rails Logger 基本

実装方法 出力させる方法 ## 出力させる方法 Logger.new("出力先", '出力内容') ex) Logger.new('/log/development', "出力内容") ## こんな書き方もある様子 logger = Logger.new('/log/development') logger.debug '出力させたい内容' 出力させるメソッド…

Rails CSV の基本 出力からアップロード Rspecまで

csv出力 view <%= link_to "CSV", products_path(format: :csv) %> controller def index respond_to do |format| format.html do @search = Product.ransack(params[:q]) @products = @search.result end format.csv do @products = Product.all data= CSV.…

開発環境で、pumaでlogを出力する

development.rbで下記の記述を記載する config.logger = Logger.new(STDOUT)

ransack の基本

導入方法 gemを入れる gem 'ransack' 実装方法 モデル情報 Productモデル controller def index @search = Product.ransack(params[:q]) @products = @search.result end view <%= search_form_for @search, url: products_path do |f| %> <%= f.label :titl…

Docker + Rails + React + Postgresの環境構築のテンプレート作成

Docker + Rails + React + Postgresの環境構築 今回はこちらの組み合わせでやりたいので、テンプレートを作成しました。 初心者向けです。 環境構築で時間をかけずに、アプリ開発に時間をかけたい人向け ちょっとmysqlあたりで余計なモノが入っているかもだ…

IP制限の実装

IPアドレスの取得方法 コントローラーでリクエストからアクセスできるみたい request.ip [44] pry(#<SempleController>)> request.ip => "172.19.0.1"yHeadsController>)> 実際に実装するときは、applicationcontrollerなどに実装するのだろう。 コロナによって、リモートワー</semplecontroller>…

React 絞り込み検索

絞り込み検索 Reactで絞り検索を実装する 挙動動画 gyazo.com ポイント ポイントは、2つ。 1つめは、filterメソッドを利用する。 配列の中身を検索するメソッド。 検索ワードを、onChangeイベントで取得して、 filterメソッドで条件にヒットしたモノだけを配…

Reactで画像を送信する

Reactで画像を送信する上で要点をまとめました。 カラムを追加する class AddImageToTweets < ActiveRecord::Migration[5.2] def change add_column :tweets, :image, :string end end carriaweaveを入れる gem 'carrierwave' アップローダーを作成 rails g …

rails scope

scope使い方 ifがついている場合はtrueの時だけ実行 この場合、access_keyにnilかfalseが入って入れば実行されない scope :search_proeucts, -> (access_key) { where(access_key: access_key) if access_key.present? }

devise メール認証ログイン

## 前提 - deviseが入っている - letter_opener_webが入っている ## 目次 - letter_opener_webを入れる - 認証実装する ## letter_opener_web - gemを入れる ``` group :development do gem 'letter_opener_web' # 追加 end ``` - 設定ファイルを編集 ```dev…

form_forのリクエストをjson化する

今回は ステータスにの変更に連動して、ステータスを更新したいなと思いました。 前提 ``` Projectモデル title status enum status: { open:1, close:2 } ``` 要件 - 1.表示画面で、現在のモデルのステータスを表示する - 2.ステータスの変更に応じてコント…

クラスとモデルの使い分け

## クラスとモデルの使い分けのポイント - レコードを残す必要がない場合はモデルを作成しない - モデルを作成しないと言う事はDBにレコードが貯まらないので、DB的には良いのかな? ## クラスを使う時のポイント - モデルのような振る舞いをするためには少…

ActiveModel::Attributesを使ってみる

## ActiveModel::Attributesとは何か? モデルカラムにアクセスする動作ができるようになるみたい ## 使い方 とりあえず試してみる ```ruby class Order include ActiveModel::Model include ActiveModel::Attributes attribute :title attribute :price end…

Active Record の基礎

## O/Rマッピング リレーショナルデータベース(RDBMS)のテーブルに接続すること ## 命名ルール - 複数形 ex) books - スキーマ 外部キー 主キー lock_version 関連付け名_type ``` class Product < ApplicationRecord end CREATE TABLE products ( id int(11…

Rails はじめに

## Railsとは何か? 2つの主要な基本理念 - 同じことを繰り返すな DRY - 設定よりも規約が優先される ルールが優先されると言う事だろうか ## Railsプロジェクト作成 - rails のgemを入れる - SQliteも同梱される - 一通りの作業が記載されている - routes -…