- 1. 【jQuery】RailsでValidation Pluginを使った動的なバリデーションチェックの実装 〜詳細実装/Bootstrap編〜
- 2. 【Rails】 独自 Validation 作成方法(複数モデル適用)
- 3. Railsアプリ起動時に突然「Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)」になった時の対処法
- 4. Rails6 データベースのカラム作成を行う際の概要
- 5. Rubyではメソッドにreturnの記述要らない?
- 6. Rails4系で統合テストをDocker環境内で行う
- 7. joinsで結合したモデルのscopeを使ってデータを取得する方法
- 8. Rails Javascript/Html: 投稿編集画面で写真の表示を確認したい!
- 9. Railsの思想
- 10. Action Cableの設定でつまずいたこと
- 11. 【Rails】掲示板に禁止ワードを設定する
- 12. リソースとは
- 13. Railsチュートリアル 第5章
- 14. Railsのテンプレファイル(html.erb)でのコメント方法
- 15. あっさり読むrails 番外(image)
- 16. メモ:ActionMailerのログにメールアドレスが出ないようにする
- 17. rails install で詰まった話
- 18. ミニQ & Aサービスの開発
- 19. 【解決策】formにカラムが設定されない!?
- 20. Active Storage + S3を使うときに気をつけること
【jQuery】RailsでValidation Pluginを使った動的なバリデーションチェックの実装 〜詳細実装/Bootstrap編〜
# はじめに
[前回の記事](https://qiita.com/tiphp452/items/2ac12f7d95a230ef9d02)では導入編をまとめましたので本記事では詳細実装編をまとめます。後半では以下の場合についてもまとめています。
+ Bootstrapを使用している場合
+ deviseを使用している場合
+ 正規表現チェックメソッドのサンプル一覧# 開発環境
Ruby 2.5.1
Rails 5.0.7.2
jQuery 3.4.1
jQuery Validation Plugin 1.19.1
Bootstrap 4.3.1# 実装手順
入力フォームを実装済み、プラグインを導入済みであることを前提としています。
## パスワードと確認用パスワードのバリデーションチェック
### 完成イメージ
[![Image from Gyazo](https://i.gyazo.com/d36d27f39c5a2170c757e1d9867cbf61.gif)](https://gyazo.com/d36d27f39c5a2170c757e1d9867cbf61
【Rails】 独自 Validation 作成方法(複数モデル適用)
# はじめに
バリデーションの作成方法はモデル内にprivateメソッドを作って、そのメソッドをvalidateの引数に指定する方法が一般的かと思います。
今回は、複数のモデルで同じバリデーションを適用したいケースへの対応方法をまとめました。# 独自バリデーション作成方法
## やること開始日時カラムと終了日時カラムを持ったモデルの入力フォームに、
どちらのカラムも入力するか、どちらのカラムも入力しないバリデーションをかけたい。### Concern
まずは、“`app/models/concerns“`の直下にバリデーション専用のクラスを作成する。
Concernsを使用することで、同じカラムを持った他のモデルにも適用することができ、さらに細かい継承関係を考えなくてもよくなります。“`Ruby:app/models/concerns/work_datetime_validation.rb
class WorkDatetimeValidation < ActiveModel::Validator # record には、インスタンスが入る def va
Railsアプリ起動時に突然「Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)」になった時の対処法
## はじめに
Railsアプリをローカルで起動させた際に、MySQLのConnectionErrorが発生しました。先日まで問題なく起動していたのですが……。mysqlサーバーに接続する際、mysql.sockファイルを使って接続するらしいのですが、
なんらかの原因により、このファイルが消えることがあるそうです。
エラー文で指定されているところに、mysql.sockファイルを作成して再度接続してみました。“`
$ sudo touch /tmp/mysql.sock
$ sudo mysql.server restart
Starting MySQL
. ERROR! The server quit without updatin
Rails6 データベースのカラム作成を行う際の概要
# 目的
– カラムを作成したり削除したりする時の概要をまとめる
# 間違えてマイグレートしてしまった時はこちらを参考にロールバックを行う
[Rails6 マイグレーションファイルの記載ミスでマイグレートしてしまったらrollbackを使おう](https://qiita.com/miriwo/items/9fac9f5e6dffb7427f80)
# 作業概要(カラムを追加する)
1. カラムを追加するテーブル名を確認
1. 追加するカラム名と型を決定
1. マイグレーションファイルの作成
1. 追加カラム情報の記載
1. マイグレート# 作業詳細(カラムを追加する)
1. カラムを追加するテーブル名を確認
1. これからカラムを追加するテーブル名を確認する。
1. 追加するカラム名と型を決定
1. 追加する任意のカラム名とデータ型を決める。
1. マイグレーションファイルの作成
1. 下記コマンドを実行してマイグレーションファイルの作成を行う。“`terminal
$ cd Railsで作成したアプリのル
Rubyではメソッドにreturnの記述要らない?
Railsで開発している際に既存コードにreturnが書かれていなかったり、returnを書いてrubocopに指摘されたりしたので調べました。
rubyでは不要であればreturnは書かない方針のようです。## RubyではReturnの記述は不要
Rubyのメソッドでは、**最後に評価された値が返る**という仕様になっています。
例えば以下のような文字列を返すメソッドがあります。“`ruby
def hoge(is_hoge)
if is_hoge
“hoge”
else
“fuga”
end
end
“`最後に評価された値が返るので、それぞれ以下を返します。
“`ruby
hoge(true) # “hoge”hoge(false) # “fuga”
“`## 後置ifでは注意が必要
例“`ruby
def hoge(is_hoge)
“fuga”
“hoge” if is_hoge
end
“`
“` ruby
hoge(true) # “hoge”hoge(false) # nil
“`
なん
Rails4系で統合テストをDocker環境内で行う
# はじめに
今回Railsのバージョンアップに向けて不足していた箇所のテストを書いていました。
その一環で統合テストを書こうとして軽く詰まったので似たような境遇方のためになればと思い(こんなレアケースに遭遇する人は少ないと思いますが)記事にしました。# なぜ統合テストなのか
プロダクトで使用している外部サービスのAPIがjsにしか対応しておらず、プロダクト内で重要な機能の一部に組み込まれていたため。# 環境
Rails 4系
Ruby 2.5.7
Rspec 3.9.1
capybara 3.30.0# 対象
– すでにRspecのテスト環境が整っている。
– dockerを用いて開発を行なっている。
– dockerを用いていない場合はローカルにインストールされているブラウザを使用すれば簡単に実装できると思います。# Railsアプリケーションが入っているコンテナにchromeなどを導入する
ブラウザ用にコンテナを分けるか迷いましたが、circleciにブラウザが導入されているRubyのイメージがあったため開発環境下でもRailsアプリケーションが入っている
joinsで結合したモデルのscopeを使ってデータを取得する方法
inner joinかつ別モデルのscopeを利用してそのモデルの状態を条件にデータを取得したい。
例えば、「紐づくuserのstatusがtrueであるtweet」を取得したいときは以下のように書ける。“`rb
Tweet.joins(:user).merge(User.available)
“`user.rb
“`rb
class User < ApplicationRecord has_many :tweets scope :available, -> {
where(status: true)
}
end
“`
tweet.rb“`rb
class Tweet < ApplicationRecord belongs_to :user end ```
Rails Javascript/Html: 投稿編集画面で写真の表示を確認したい!
# = f.file_field :image, id: :message_img, placeholder: “写真の貼り付け:” 以下にJavaScriptを配置
:javascript
$(function() {
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$(‘#img_prev’).attr(‘src’, e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}
$(“#message_img”).change(function(){
r
Railsの思想
## はじめに
「パーフェクト Ruby on Rails」に Rails の特徴、強く打ち出している思想について始めのほうに記載されていたので「パーフェクト Ruby on Rails」を振り返り、メリットを知りたいと思いましたのでまとめます。## CoC(Convention over Configuration)
直訳では「設定より規約」になります。有名です。
従来のアプリケーションフレームワークには規約がなく、開発者が自由に設定ができますが、Railsはファイル名の規約やテーブル定義の規約など様々な規約があります。#### パーフェクト Ruby on Railsの例(そのままではないです)
– 社員情報を表現するモデルをEmployeeモデルとした場合、Railsで規約には則って開発することが求められる
– データベースのテーブル名はモデル名の複数形のEmployeesにする
– /employeesというURLは社員の一覧を表す
– /employees/1というURLは社員ID:1の社員情報を表す### ✔️メリット
– 規約に則って記述することで、設
Action Cableの設定でつまずいたこと
##行っていること
以下の記事や動画を参考にチャット機能を作成しています。
[Rails 5 + ActionCableで作る!シンプルなチャットアプリ(DHH氏のデモ動画より)](https://qiita.com/jnchito/items/aec75fab42804287d71b)
[0から手を動かして作るRailsチャットアプリ【チュートリアル】](https://www.youtube.com/watch?v=WCsgcp5dg7M)リアルタイムでのチャット機能を作成する際につまずいたことを、記録も兼ねて共有します。
##やりたいこと
自分(current_user)と他の人で表示方法を変える
##チャンネルの作成
“`
$
【Rails】掲示板に禁止ワードを設定する
掲示板にクローラー的なやつがリンクやスクリプトを書き込み始めたので、暫定的な対応をしました。
“`comments_controller.rb
def create
#以下の4行で対応
prohibited_words = [‘a href=’, ‘