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

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

エラー:Trying to get property ‘id’ of non-object

# 解決法
このエラーはそのObjectには、idというプロパティはないのに、取得しようとしているという意味なので,idがnullになっている可能性が高い
そのnullに値を入れれば解決するはず、、

元記事を表示

form_withのform.〇〇について

##form_withのform.〇〇について

form.withのform.〇〇について、わからないところがあったので、備忘録としてまとめていく。

###form.text_field

“`ruby:
<%= form.text_field :title %>
“`
幅20文字の入力欄が設定される

###form.text_area

“`ruby:
<%= form.text_area :content %>
“`
40×20の入力欄が設定される

###form.email_filed

“`
<%= form.email.field :email %>
“`
投稿内容に@が含まれていないとメールアドレスとみなされず、エラーになる。
テスト時に注意!

他にもいろいろあるが今回はメールの入力欄にてテスト時にエラーが出たので、備忘録としてまとめた。

元記事を表示

i18nのロケールをJavaScriptにわたす

## 多言語対応のアプリを作成中に詰まった
jQueryとAjaxを使って、親カテゴリを選択すると子カテゴリの候補がプルダウンで表示されるようにしました。
ところが、子カテゴリだけ、デフォルト表記のベトナム語でしか翻訳されてませんでした。

例:親カテゴリ => 質問
  子カテゴリ => 1,Ngôn ngữ và văn hóa
         2,Tập huấn kỹ thuật
         3,Ứng dụng và thủ tục

## 原因
Ajaxで子カテゴリを取得する際、コントローラにロケールを渡してないことが原因でした。

“`category_pulldown.js
$(“#parent”).on(“change”, function () {
// 選択した親カテゴリからIDを取得
var id = document.getElementById(“parent”).value;
// 中略
$.ajax({
type: ‘GET’,
data: { parent_id: id }, // IDをparams[:parent_id]に

元記事を表示

【Ruby on Rails】Chartkickでカラム別集計の円グラフを作成

##はじめに
railsでグラフを挿入したかったのでchartkickを使用しました。
導入自体も容易なので、集計結果の円グラフ化の方法を記載します。

参考にしたページ
-[chartkick公式ドキュメント](https://chartkick.com/)
-[Railsでシンプルなグラフを扱うならchart-js-rails よりchartkickを使うべし](https://qiita.com/Y_uuu/items/0d57748954c7cdb9bbcb)
-[爆速で円グラフを実装する[5分]](https://qiita.com/Y_uuu/items/0d57748954c7cdb9bbcb)

##環境
ruby 2.5.1
Rails 5.2.4.3

##前提と目標
ユーザの意見をまとめた**votesテーブル**の**opinionカラム(integer)**から円グラフを作成する。
opinionカラムの値が1の場合は賛成、0の場合は反対で集計しますが、他の値やNULL値が混ざっている状態で作成します。

**votesテーブル**

|id|opinion|

元記事を表示

Railsアプリケーションに、コメント機能を実装する

[Railsアプリケーションに、いいね機能を実装する – Qiita](https://qiita.com/si-ma/items/1566104ef88eefde5372)に続きまして、
コメント機能の実装について触れていきたいと思います。
[Railsでコメント機能をつくってみよう – Qiita](https://qiita.com/nojinoji/items/2034764897c6e91ef982)の記事を参考にさせていただきました。
ER図は下記のようになります。(この図の書き方で合ってるのだろうか…)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499375/27648eab-d5f3-724c-981a-a6988b3124ff.png)

## コメント機能の追加

コメントモデルを作成します。

“`
$ rails g model comment content:string user_id:integer article_id:integer
$ rai

元記事を表示

【Rails】複数のDB処理をまとめる transaction を実装してみた

# はじめに
Rails でアプリを開発していて、複数テーブルのデータを同時に作成する、という処理を実装していた。
その処理において、どちらかの処理が失敗した場合に双方の処理をなかったことにする transaction という概念があることを知ったので備忘録兼アウトプットとして、 transaction についておよび、実装した内容について書く。

# transaction とは
「transaction」という言葉の定義を調べると
【処理、取り扱い、処置、業務、取引、売買、会報、紀要、議事録】 このように出てくる。

ITやプログラミングにおいては
「複数の処理を一つにまとめた分割不可能なもの」

と定義づけることが出来そうです。

こちらの記事がトランザクションの概念について非常にわかりやすいくまとめられており、参考にさせていただきました。

[「トランザクション」とは何か?を超わかりやすく語ってみた!](https://qiita.com/zd6ir7/items/6568b6c3efc5d6a13865)

# transaction メソッド使い方
– 複数の処理を一つのま

元記事を表示

RailsとBootstrapでサイドバーにVerticalな展開式のnavを作る方法

Bootstrapでサイドバーにカテゴリー一覧を出し、親要素と子要素をネストさせたい?
スクリーンショット 2020-07-07 18.15.10.png

展開(collapse)はBootstrapでは`#sidemenu1`のようなIDをターゲットにするのが決まりらしい。

“`erb

元記事を表示

railsで開発中にAWSから高額請求されたが、、

はじめに以下の記事にあるように、railsでアプリを開発中に初期設定のミスが原因で高額請求に至った。
https://qiita.com/381704/items/d5216295eadd67eb9e8c

完全に注意不足であり、しっかり利用してしまったあとなので支払うしかないと思っていたが、駄目元でAWSのサポートセンターに以下のようなメールを送ってみた。(本文を載せるのは抵抗があったが、証拠&同じ状況の人の希望になればと思い残しておく)
スクリーンショット 2020-07-07 16.17.45.png

2日後にAWSサポートより返信が来た。返信内容には、現在料金が発生しているRDSのインスタンスとスナップショットの削除をすることとあり、その後に返金が可能かの相談にはいるということだ。
内容通り、RDSの削除

元記事を表示

Rails5でECサイトを作る④ ~ヘッダーとフッター~

# はじめに
架空のベーカリーで買い物できるECサイトを作るシリーズ、[Rails5でECサイトを作る③](https://qiita.com/GreenFingers_tk/items/d77555311286d966462e)の続きです。
今回は、ヘッダーとフッターを作ります。せっかくなのでレスポンシブ対応にしてみました。

# ソースコード
[https://github.com/Sn16799/bakeryFUMIZUKI](https://github.com/Sn16799/bakeryFUMIZUKI)

# 配色
いきなり余談ですが、サイト全体のテーマカラーを決めました。店名(架空)が文月なので、夏らしい青系統の色でまとめます。
カラーコードも一応載せておきます。ご参考までに。

濃青……#120136、rgb(18,1,54)
中青……#035aa6、rgb(3,90,166)
淡青……#40bad5、grb(64,186,213)
ワンポイント黄……#fcbf1e、rgb(252,191,30)

# ヘッダー
app/views/layouts内に、ヘッダー用の

元記事を表示

URLエンコードについて調べてみた

# WEB上のPDFファイルが見れない
なぜかアップロードしたPDFファイルがリンク切れになっていたので
その調査内容を記録します。

#### ユーザ環境
* MacBook
* Chrome

#### アプリケーション環境
* AWS EC2
* AWS S3
* ruby 2.6.5
* Rails 5.0.7.2
– refile (0.6.2)
– refile-s3 (0.2.0)

#### 見れないファイルのパターン
チルダ「~」がファイル名に含まれているファイルはリンク切れになってしまう。

#### ファイルリンクを作成するコード

“`slim

li
= link_to attachment_url(file, :file), target: ‘_balnk’
b-icon(icon=”attachment”)
span.file__name = file.file_filename
“`

#### 実際に生成されるhtml
“` html

元記事を表示

いちばんやさしいスパムの殺しかた【スパム対策:スパムの登録防止から削除方法まで】

#概要

**この記事は、『運営しているWebサービスにスパムが登録してきたときの対処法』について書いたものです。**

この記事は、自分が開発している英単語学習サービス「BooQs」に、スパムが大量に登録してきた実体験をもとに書いた備忘録です。

(利用技術:Rails5.1)

###前提:スパムを放置することで発生する不利益

反省点として、
正直なところ、自分はスパムへの対応に遅れました。
スパム登録に気付いてからもしばらくは、何も対応を取りませんでした。

その理由は2つあります。
1つは、多忙によりスパムへの対応よりも優先すべきと思われるタスクが山ほどあったこと。
**そしてもう一つは、自分自身、スパムに登録される不利益について知らなかったため、スパム対策の優先順位がなかなか上がってこなかったためです。**

この反省を踏まえて、まずスパムによって引き起こされる不利益を、運営者の視点とユーザーの視点から紹介します。

これを読めば、すぐにスパムに対応したくなるはず。

####【運営者の不利益】:重要な指標の精度が下がる
リーンスタートアップを読まれた方には馴染みがあ

元記事を表示

RSpecのassignsメソッドを復習するぞ

#assignsメソッドの使い方

assignsメソッドはコントローラのインスタンス変数をテストするメソッド。
引数にインスタンス変数をシンボル型で渡す。(超重要)

“`categories_controller_spec.rb
require ‘rails_helper’

RSpec.describe Potepan::CategoriesController, type: :controller do

describe “GET #show” do
let!(:taxon) { create(:taxon, name: “Bags”) }
before { get :show, params: { id: taxon.id } }

it “assigns @taxon” do
expect(assigns(:taxon)).to eq taxon
end
end
end
“`

この場合、コントローラ側で@taxonというインスタンス変数を定義していることになる。

テストの内容としては、コントローラで作成し

元記事を表示

「bundle install」するとgem系のファイルについて大量にgit差分が発生してしまう

### 発生した背景
新しいgemを入れるときに、以下のコマンドを実行するとgitに大量に差分が発生することがあります。

“`:コマンド
bundle install –path vender/bundle
“`

(スクショの「Unstaged Files(1)」というところが、10000とかになったりする。ごめんなさい、再現ができなかったです)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647299/712e9a14-4552-8860-7bf2-f638093e3874.png)

この件について対応方法を検討したいと思います。

### 環境
| 項目 | 内容 |
|:—————–|:—————

元記事を表示

rails メソッド

# railsメソッド
human_attribute_nameで多言語対応できる
const_get
https://docs.ruby-lang.org/ja/latest/method/Module/i/const_get.html

元記事を表示

とにかくRails6でrswagを動かす

## 紹介する内容
– swagger.jsonから作られたAPIドキュメント画面が見えます(rswag-ui)
– rspecで手作りのAPIのテストができます(rspec)
– https://github.com/rswag/rswag が紹介する対象です

## 結論
### rails newしたプロジェクトで`とにかく`rswagを動かせる実装とコマンドです
– Gemfileにgemを追加して`bundle install`します

“`
gem ‘rswag-api’
gem ‘rswag-ui’

group :test do
gem ‘rspec-rails’
gem ‘rswag-specs’
end
“`

– 実行コマンドです

“`
bundle exec rails g rswag:api:install
bundle exec rails g rswag:ui:install

bundle exec rails generate rspec:install

RAILS_ENV=test bundle exec rails g r

元記事を表示

なるべく最新Verで構築するRails6開発環境(Docker + Rails + Nginx + Puma + MySQL)

# はじめに

こんにちは、Web系エンジニア転職にむけて学習中の Npakk と申します。

Railsを学習するにあたって開発環境を構築したので、その手順を少し解説を交えながらご紹介します。
Dockerでの構築経験はあまりなく、経験も乏しいのであくまで参考程度にご覧ください。
もし間違いやご指摘などあれば、ぜひぜひお願いいたします!

Dockerを使用して、ローカル環境でRailsのWelcomeページを確認できるまでが、この記事のゴールです。

#### 参考記事
– ほとんどこちらの記事を参考にさせていただいてます。
– [Docker + Rails + Puma + Nginx + MySQL](https://qiita.com/eighty8/items/0288ab9c127ddb683315)
– こちらも参考にさせていただきました。
– [クジラに乗ったRuby: Evil Martians流Docker+Ruby/Rails開発環境構築(翻訳)](https://techracho.bpsinc.jp/hachi8833/2019_09_06

元記事を表示

今更ながら rails + wercker + codecov をやってみたが上手くいかない

# はじめに

rails + wercker は数年やっていたのですが [codecov](https://codecov.io/) を知らなかったので連携してみた(けど上手くいかない)、というだけの記事です。

# 環境

– Rails 5.2.4 系
– SimpleCov 0.18.5
– SimpleCov-Html 0.12.2
– CodeCov 0.1.17

注: Rails 以外の gem のバージョンは 2020/7 現在の最新だと思います。

# 設定

変更したファイルは 2つだけ。

– Gemfile
– test/test_helper.rb

“`Ruby:Gemfile抜粋
# テスト環境 限定
group :test do
gem ‘codecov’, :require => false
(以下省略)
end
“`

“`Ruby:test/test_helper.rb抜粋
require ‘simplecov’
SimpleCov.start ‘rails’

if ENV[‘WERCKER’] == ‘true’
require

元記事を表示

PG::ObjectInUse: ERROR: database “myapp_development” is being accessed by other users

ポートフォリオ作成中

“`ruby:db/seeds.rb
User.create!(name: “テスト 太郎”,
email: “test@example.com”,
password: “foobar”,
password_confirmation: “foobar”
)

99.times do |n|
name = Faker::Name.name
email = “test#{n}@example.com”
password = “foobar”
User.create!(name: name,
email: email,
password: password,
password_confirmation: password)
end
“`

ページネーションを実装していくため
テスト用アカウントを作成しようとすると、
こんなエラーが出ました。

“`
$ rails db:migra

元記事を表示

permutationメソッドを使って初期設定ユーザー達を全員相互フォロー関係にする

## はじめに
初めてqiitaに投稿します初学者と申します。
文言に誤り等がありましたらご指摘いただけますと幸いです。

作成中の転職活動用ポートフォリオにて、初期データのユーザー達をseeds.rbで相互フォロー関係にさせておりました。
とある企業のエンジニア様からwantedlyにてコードレビューを含んだ返信をいただき、
このseeds.rbに関して「ロジックが異常に分かりにくい」と指摘を受けました。

## 修正前のseeds.rb
下記のコードで初期設定ユーザー達を相互フォロー関係にさせておりました。

“`db/seeds_relationships.rb
19.times do |n| # 19回処理を繰り返す
users = User.all # 変数usersに全てのUserオブジェクトを代入
user = users.find(n + 1) # 変数usersから指定したid(n+1)のUserオブジェクトを変数userに代入
following = users[0..18] # 変数followingに配列usersの1~19番目までのUserオブジ

元記事を表示

OTHERカテゴリの最新記事