Rails関連のことを調べてみた2020年01月10日

Rails関連のことを調べてみた2020年01月10日

【Rails】config/localesに新規追加したファイルが読み込まれない【I18n】

# はじめに
タイトルの通りです。
Railsで多言語化対応をする際にconfig/localesにymlファイルを追加していくと思いますが、それが読み込まれない場合の対応策です。

# 結論
早速結論なのですが、超シンプルで、`Railsサーバを再起動する`です。。。
既存ファイルに訳文を追加する場合はRailsサーバの再起動は不要ですが、新規ファイルを追加した場合はRailsサーバの再起動が必要です。

ちなみに少しこの内容と外れるかもしれませんが、RailsガイドにRailsの初期化プロセスについて記載があったので参考としてリンクを貼っておきます。
[Railsの初期化プロセス](https://railsguides.jp/initialization.html)

# おわりに
単純なミスで恥ずかしいのですが、めっちゃハマって辛かったので記事にしてみました。(typoやインデント、ディレクトリ構成等見直しまくりました。。。)
案外検索しても出てこず、他ごとしてたら急に「これ、サーバ再起動案件じゃね。。。?」と気が付いた次第です。はい。

元記事を表示

#Rails + #rspec + #VCR で SECRET_KEY など秘密の環境変数・情報をフィルタリングする設定

# 例

`spec/support/vcr_config.rb`

“`rb
VCR.configure do |config|
config.filter_sensitive_data(‘‘) { ENV[‘SOME_SECRET_KEY’] }
end
“`

# Ref

VCR で外部 API へのリクエストをダンプするときに機密情報をマスクしたい – Qiita
https://qiita.com/gotchane/items/c2c29c0063bd44246510

# Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/2926

元記事を表示

index.html+mobile.haml なviewをrspecする

“`ruby
before_action do
request.variant = :mobile if ua.match(/Android/)
end
“`

とかするとviewを切り替えられる `ActionPack Variants` という機能[^1]で
view specを書く方法

“`ruby
# spec/views/users/index.html+mobile.haml_spec.rb

RSpec.describe ‘users/index.html+mobile.haml’, type: :view do
it do
render
end
end
“`

とやると 「`html+mobile` 何ていうフォーマットねーよ」 と怒られる
なので `render` の呼び出しで正しい情報を与える

“`ruby
# spec/views/users/index.html+mobile.haml_spec.rb

RSpec.describe ‘users/index.html+mobile.haml’, type: :view do

元記事を表示

テーブルの結合ができない。。Mysql2::Error: Column ‘updated_at’ in order clause is ambiguous

# はじめに
Railsでeager_loadしようとしたときに、下記のようなエラーが出て解消に時間がかかったのでまとめました。

“`
Mysql2::Error: Column ‘updated_at’ in order clause is ambiguous
“`

# やりたいこと
user の updated_at を指定した期間のものだけ抽出するために、テーブルの結合をしたい。

# なぜeager_loadできないのか

これを実行すると、

“`ruby:user.rb
User.where(“updated_at >= ‘2020/01/01’ and updated_at <= '2020/01/31'").eager_load(:post) ``` MySQLのエラーが出る。 ``` Mysql2::Error: Column 'updated_at' in order clause is ambiguous ``` なぜか。 updated_at は User にも Post にも存在しているため、どちらの updated_at なのか判別がつかな

元記事を表示

rails メッセージ機能実装

少しまがあきました
以前の続きを

# 目次

1,モデルを作成する
2,ルーティングを設定する
3,該当するアクションをコントローラに定義する
4,メッセージ送信機能を実装する
5,グループにメッセージを表示する
6,サイドバーに最新のメッセージを表示する
7,細かいリンクの作成

# 1,モデルを作成する

“`bash:ターミナル
$ rails g model message
“`

“`ruby:202XXXXXXXXXXX_create_messages.rb
class CreateMessages < ActiveRecord::Migration[5.2] def change create_table :messages do |t| t.string :content t.string :image t.references :group, foreign_key: true t.references :user, foreign_key: true t.timestamps e

元記事を表示

Railsで検索窓で入力された文字列を使ってDBを検索する

# whereメソッドとLIKEの説明
whereメソッドとは、DBに対して任意の条件で検索して、データを取得するためのメソッド。
LIKEは、曖昧検索を行う仕組み。
ここでいう曖昧検索とは、「文字列が”a”ではじまる単語」とか「”06″で始まる電話番号」などの曖昧な表現を検索する仕組みです。

まず前提として、usersテーブルから特定の文字列で始まるユーザー名を検索しています。
このコードはコントローラに記述されていて、リクエストで入力された値がparams[:keyword]で送られてきています。

以下のコードを見ながら説明します

“`ruby:qiita.rb
@users = User.where(“name LIKE ?”, “%#{params[:keyword]}%”)
“`
三段階にわけて説明します。
①User.where
モデル名.whereとすることで、そのモデルのテーブルを検索するよう指示を出します。
②whereの第一引数 “name LIKE ?”
まずLIKEの前で、検索するカラムを指定します。ここではnameカラムを検索するようにしています。

元記事を表示

config以下のファイルが更新されないとき

config以下のファイルはサーバーの再起動しないと変更が更新されません

元記事を表示

Railsチュートリアル 第13章 ユーザーのマイクロポスト – 基本的な画像アップロード

# 作成中のアプリケーションから、画像アップローダー「CarrierWave」を使えるようにする

画像投稿機能を実装するために必要な画像アップローダーとして、今回は、「CarieerWave」という画像アップローダーを用います。CarrierWaveをRailsアプリケーションで用いるためには、Railsアプリケーション側に`carrierwave`というgemが必要となります。

早速`Gemfile`を更新していきましょう。

“`diff:Gemfile
source ‘https://rubygems.org’

gem ‘rails’, ‘5.1.6’
gem ‘bcrypt’, ‘3.1.12’
gem ‘faker’, ‘1.7.3’
+ gem ‘carrierwave’, ‘1.2.2’
+ gem ‘mini_magick’, ‘4.7.0’
gem ‘will_paginate’,

元記事を表示

中間テーブルを経由して別テーブルから取得した値をviewに反映させる方法

chatアプリケーション制作時に、中間テーブルを経由して、別のテーブルから特定の値を出力する方法がわからず、苦しめられたので、その備忘録に。

###やりたいこと
・現在のchatグループのメンバーリストをヘッダーに反映させたい。
(下画像のピンク色の部分)

![1.png](https://gyazo.com/344cce0d97d0f1ac471b81be47a9bdd1.png)

hamlは以下の通り

“`haml:_main_chat.html.haml
.chat-main
.top
.top__left-box
.top__left-box__group-name
= @group.name
.top__left-box__members
-# ここに何を記述すれば良いかが今回の論点
-# =@group.users.name 左記では上手く呼び出せない
.top__edit-btn
= link_to edit_group_path(current_use

元記事を表示

【Rails】メールを送信する(ローカル)

##基本
“`terminal
$ rails g mailer SampleMailer hoge
“`
メーラーとViewファイル×2(HTML版とプレーンテキスト版)が生成されます。

“`app/mailers/sample_mailer.rb
class SampleMailer < ApplicationMailer def hoge @greeting = "Hi" mail to: "to@example.org" end end ``` ```erb:app/views/sample_mailer/hoge.html.erb

Sample#hoge

<%= @greeting %>, find me in app/views/sample_mailer/hoge.html.erb

“`
“`erb:app/views/sample_mailer/hoge.text.erb
Sample#hoge

<%= @greeting %>, find me in app/views/sample_m

元記事を表示

【Rails】簡単seedデータの挿入方法

#概要
Railsにおけるseedデータの挿入方法メモ
Gemを利用してデータベースに複数の初期データを挿入していく。

#やり方

Gemfileに

“`
gem ‘faker’
“`

“`
$ bundle install
“`

https://github.com/stympy/faker
データを生成できるものは上記READMEに載っている。

例えば、
a = Faker::Movies::StarWars.character
でaの中にスターウォーズキャラクターの名前が入り、初期データとして作成できる。

`db/seeds.rb`

に以下追記。

“`db/seeds.rb
100.times do |n| #100件シードデータを作成するということ。
name = Faker::Movies::StarWars.character
email = Faker::Movies::StarWars.droid
password = “password”
User.create!(name: name,
emai

元記事を表示

【Rails】FontAwesome

準備

Gemfileに
`gem ‘font-awesome-rails’`を記載。
ターミナルで`gem ‘font-awesome-rails’`を実行。

“`bash:ターミナル
bundle install
“`

`application.css`に`*= require font-awesome`を記載。

“`css:app/assets/stylesheets/application.css

/*
(省略)
*= require font-awesome
(省略)
*/
“`

使い方

``

ヘルパーメソッドを使用できるので
`<%= fa_icon("home") %>`
と書くこともできる。

例えば
`<%= fa_icon("home 5x") %>`
で5倍。

元記事を表示

【Rails】ブックマーク機能のajax化

[【Rails】ブックマーク(お気に入り)機能](https://qiita.com/hiro266/items/8a0374155cd18adbd7cf)の続きでブックマークボタンをajaxします。

# 環境
`Rails 5.2.3`
`mysql 5.7.28`
`gem jquery-rails`
→インストールしてapplication.jsで読み込んでください。
`rails-ujs`をapplication.jsで読み込んでください。

# 実装

Railsでajax通信を行う方法は大きく二つあります。
1. remote: trueをリンクボタンに設定
2. JSファイルに任意のタイミング(clickイベント)でajax通信を発火させる

今回は`remote: true`を使用してajax通信を実装します。

## ブックマークボタンクリック時にajax通信を行う
ajax前の現在の状況を確認します。

“`ruby:bookmarks_controller.rb
class BookmarksController < ApplicationController

元記事を表示

gem install で特定のversionをインストールする

“`
gem install gem_name -v version_number
“`

“`
gem install gem_name –version version_number
“`

“`
gem install gem_name:version_number
“`
コロンでもversion指定ができる
https://github.com/rubygems/rubygems/blob/master/lib/rubygems/commands/install_command.rb
> Can’t use –version with multiple gems. You can specify multiple gems with version requirements using gem install ‘my_gem:1.0.0’ ‘my_other_gem:~>2.0.0’

元記事を表示

【Rails】ラジオボタンの実装

ちょっと複雑だったのでまとめます。`customer`はモデル名です。

“`erb:erb
<%= f.label :receive_news, '受け取る', value: 1 %>
<%= f.radio_button :receive_news, '1' %>

<%= f.label :receive_news, '受け取らない', value: 0 %>
<%= f.radio_button :receive_news, '0' %>
“`
“`html:出力されるhtml


【Rails】kaminariを使用して基本的なページネーション機能を実装する

## 前提
bundlerを使用して、Gemfileでgemを管理していることを想定しています。

## 使い方
### 準備(インストール)
1.Gemfile内に`gem kaminari`を記述

“`ruby
# Gemfile
gem ‘kaminari’
“`

2.kaminariをインストール

“`shell
$ bundle install
# 「bundle」だけでもOK
“`

### 設定
#### 設定ファイル作成
1.設定ファイルを作成する

“`shell
$ rails g kaminari:config
“`

2.設定ファイルが作成される

config/initializersディレクトリ配下に「kaminari_config.rb」ファイルが作成されます。
作成されたファイルをいじることで、「kaminari」のデフォルト設定を変えることができます。

以下の記事に詳しく書かれていたので参考にしてみて下さい。
[Railsライブラリ紹介: ページングを行う「kaminari」](https://www.techscore.com/

元記事を表示

[Rails] setting.rb編集後の反映コマンド

rails consoleを使用しているときは、モデルの更新があったらコマンドを叩いて更新しないと反映されずにハマるので、メモ

`pry(main)> Settings.reload!`

元記事を表示

[Rails] lambdaを使う

アクション内にサクッと追加するファンクションを定義したい時に使うっぽい。
可読性を考えると後者の方かな。

“`ruby
def aaa
a = ->(num) {
puts num * 100
}
a.call(1)
end
“`
or

“`ruby
def aaa
a = lambda{|num|
puts num * 100
}
a.call(1)
end
“`

元記事を表示

「ActiveModel::ForbiddenAttributesErrorの対処方法

最近の勉強で学んだ事を、ノート代わりにまとめていきます。
主に自分の学習の流れを振り返りで残す形なので色々、省いてます。
Webエンジニアの諸先輩方からアドバイスやご指摘を頂けたらありがたいです!

#なぜエラーが発生したか?
このエラーが起きた状況は、Active Adminで作成したユーザー管理画面において編集機能を追加するために
actionsに:editを追加した所、[Routing Error No route matches [PATCH] “/admin/users/1″が発生](https://qiita.com/hirokik-0076/items/84123e00432087cf15ba/)
して、それを解決した後、編集したデータを更新した際に発生いたしました。

“`ruby

ActiveModel::ForbiddenAttributesError in Admin::UsersController#update
ActiveModel::ForbiddenAttributesError
“`

##なんのエラーか?

A(アンサー):Strong Par

元記事を表示

【Ruby on Rails】devise_token_authでTwitterログイン機能の実装

#前回の記事
[DockerでRuby on Rails + Reactを別々にアプリ作成する環境構築手順](https://qiita.com/dl10yr/items/b76969da1c2c33595a4a)
#やったこと
Rails(APIモード)でdevise_token_authを用いたTwitterログイン機能の実装
#参考記事
この記事を大変参考にさせていただきました。
[Rails 5 API + Vue.js + devise_token_authでTwitterと連携するSPAを作る(①RAILS編)](https://qiita.com/natsukingdom-yamaguchi/items/15142bd4ad77679afb04#3-rails-api%E3%81%ABtwitter%E8%AA%8D%E8%A8%BC%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B)
#実装手順
###Gemfileの追記
モジュールインストールのためにGemfileに追記

“`ruby:Gemfile
###auth/Twi

元記事を表示

OTHERカテゴリの最新記事