Rails関連のことを調べてみた2023年09月26日

Rails関連のことを調べてみた2023年09月26日

rails ユーザデータ削除方法(備忘録)

#### 登録したユーザーの削除

rails consoleを起動

“`ruby
User.all
“`
を使い、現在の登録されているユーザを確認する。

#### id指定で削除
“`ruby
User.find(id).destroy
“`

– 再度、User.allをして消えたか確認する。

元記事を表示

【RSpec】備忘録:stub_constメソッド、create_listメソッド

## stub_constで定数をスタブ化する

:::note
RSpecのテストフレームワークを使用しているRubyやRuby on Railsのプロジェクトで見られるメソッドの一つ。一時的に定数の値をスタブ(つまり、偽の値に置き換える)するのに役立つ。
:::

#### 使用例
特定の定数の値に依存するコードをテストしている場合、その定数の値を一時的に変更してテストシナリオを検証することができる。

“`ruby
it “does something based on MY_CONSTANT” do
stub_const(“MyClass::MY_CONSTANT”, “fake_value”)

# このブロック内では、MyClass::MY_CONSTANTは”fake_value”として扱われる
expect(MyClass.some_method).to eq(expected_result_based_on_fake_value)
end
“`

この例では、`MyClass::MY_CONSTANT`を`fake_value`に一時的に置き換え

元記事を表示

【Rails】Qiita APIを使ってRailsに関する記事を取得する

# はじめに
お疲れさまです。
おおくまです。

[前回](https://qiita.com/kumaryoya/items/eafbc5063e60e3aaa4d5)に引き続きAPIについてです。
今回は、**Qiita API**を使ってRailsでミニアプリを作ってみました。

# 環境
Ruby 3.2.2
Rails 7.0.8

# 注意点
:::note warn
私はプログラミング学習中で、初学者です。
内容に誤りがある場合があります。
コメント等で教えていただけると幸甚です。
:::

# アクセストークンを取得する
それでは、[Qiita APIのドキュメント](https://qiita.com/api/v2/docs)に沿って実装していきたいと思います。
まず、初めに**アクセストークン**を取得します。
アクセストークンを取得しなくてもAPIを利用することはできますが、認証している状態ではユーザーごとに1時間に1000回まで、認証していない状態ではIPアドレスごとに1時間に60回までという[利用制限](https://qiita.com/api/v2/doc

元記事を表示

実務未経験から情報共有サービス『HomeCareConnect』を開発してみた【Rails7 / MySQL / AWS / Docker 】

![スクリーンショット 2023-09-19 12.07.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117662/02d1be9a-8939-0cd5-604b-4b8897ea1df9.png)

# はじめに

はじめまして! ごん([@gon0821](https://qiita.com/gon0821))と申します:relaxed:

未経験からWebエンジニアへの転職を目指しており、その過程で **「在宅療養者の健康状態と薬の管理を円滑にするサービス」** を作成しましたので、`プロダクト内容`や`学習過程等`を紹介したいと思います!

これからエンジニアを目指される方や現在学習中の方にとって少しでも参考になれば、嬉しいです:raised_hands:

# 自己紹介
– バックエンドエンジニアを目指す27歳
– 前職は地方公務員
– 性格は「穏やかだね」と言われることが多い
– 好きなことは、テニス、スノーボード、ピアノ、ドライブ?
– 2023年4月から本格的に学習開始(学習期

元記事を表示

【Rails】CarrierWaveとMiniMagickで画像を.wepbに変換する

# 画像を.webpに変換したい

と思って記事を探したんですが、無さそうだったので投稿します。

CarrierWaveとMiniMagickの導入方法については多くの記事があるため、今回は割愛させて頂きます。

https://qiita.com/wonder_boooy/items/1510f8750d1282693148

### .webpに変換する方法

具体的な方法ですが、CarrierWaveのUploaderクラスに記載するだけです。

https://github.com/carrierwaveuploader/carrierwave#getting-started

“`$ rails generate uploader 〇〇〇“`コマンドで作られたファイルにコードを書きます。?マークのコメントが該当部分

“`app/uploaders/stamp_image_uploader.rb
class BoozeImageUploader < CarrierWave::Uploader::Base # Include RMagick or MiniMagic

元記事を表示

ransack scopeの検索キーワードとして ‘T’ が使えない

# 問題

ransackでは、ActiveRecordのscopeを用いて検索することができます。しかし、以下のように検索キーワードとして `’T’` は使えません。エラーメッセージにある通り、scopeに渡されているはずのキーワードが渡されていません。

![Sep-24-2023 23-49-35.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472392/4e3f26ba-85f5-3ce6-680d-540e33f2515d.gif)

## 環境

– Rails 7.1.7
– Ruby 3.2.2
– Ransack 4.0.0

# 原因

このような問題が起きるのは、`’T’` などといった真理値っぽいものは、ActiveRecordのscopeに渡される前にサニタイズされるからです。

検索キーワードとして、真っぽいものが入っていたら `true`に、偽っぽいものが入っていたら`false`に変換しています(`sanitized_scope_args`メソッドの5-8行目)。

元記事を表示

Railsの本番環境を作る

## 概要
Railsの本番環境を作る手順です。

## 環境
– Ubuntu20.4 (vagrant)
– PostgreSQL12.4
– Rails5.2

## 手順

#### アセットファイルのプリコンパイル

アセットファイルをプリコンパイルします。JavaScriptsでコードを書いている場合、プリコンパイルでYarnが使われます。Yarnがインストールされていなければ、Yarnがありませんというエラーメッセージが表示されますので、事前に、Yarnをインストールしておく必要があります。
“`
$rails assets:precompile RAILS_ENV=production
“`

>(トラブルシュート)
>このようなエラーが出てきました。対応方法はメッセージにある通りです。ハーモニックモードを有効にする設定場所は、config/production.rbです。
>
>To use ES6 syntax, harmony mode must be enabled with Uglifier.new(:harmony => true). (訳)ES6 構

元記事を表示

コールバックでのsaved_change_to_ と will_save_change_to

## はじめに
スクールにて、コールバックの設定に手間取り、その際調べることで挙動の違いを理解したつもりなので、同じようなことにハマった人のためになればいいなと、健忘録として残します。

### 開発環境
Rails 6.1.7.4
ruby 3.0.1

### 目的
管理者が、最後の1人のとき、管理者が0人とならないように権限の編集を制限する。
つまり、1人もいなくなっちゃ困るので、必ず1人は権限を在籍させたい訳です。

### 最初に試したこと(失敗したこと)
– Qiita記事や調べてまずは下記のように設定
“`rb
def admin_cannot_update
if User.where(admin: true).count == 1 && self.saved_change_to_admin == [true,false]
throw :abort
end
end
“`
adminに設定されたユーザーがデータベースに1人だけであり、かつ対象のオブジェクトのadminカラムをtrueからfalseに変更しようとしたとき、 thow :abortで更新を中

元記事を表示

画像複数投稿

# 初学者の備忘録
初学者の備忘録です。前に投稿した[画像投稿]()の発展、画像複数投稿編
[参考にした記事](https://qiita.com/oak1331/items/830755889a37ceee1bc6)

## 注意
前回の画像投稿はプレビュー機能も一緒に載せてましたが、今回は複数投稿なのでプレビューは表示できません。これから挑戦しようと思います。

## 実装
【1】 アソシエーション
元々あったアソシエーションは単数なので複数に対応したアソシエーションに変更します。
“`diff_ruby:app/model/必要ファイル名


# 単数投稿
– has_one_attached :image
# 複数投稿
+ has_many_attached :images


“`

【2】 ストロングパラメーター
ストロングパラメーターの定義をハッシュ形式にします。ハッシュ形式にした場合は最後に記述してください。
“`diff_ruby:app/controllers/必要ファイル名


private

def place_

元記事を表示

【個人開発】LINEMessagingAPIを使って無差別に飯テロできるアプリを作りました

# はじめに
こんにちは、すずゆーと申します。

突然ですが皆様は飯テロをしたことはありますでしょうか。
私はSNSに美味しいご飯をアップするのが大好きです。
アップした写真に対してフォロワーさんからの反応を楽しむのが大好きです。

しかし、SNSだとせっかくアップしても本当に見てもらいたい人に見てもらえない時があったり…
そんな中、LINEなら確実に相手に届くし見てもらえるじゃん!ということで私の悪戯心を具現化したアプリを開発しました。

## 記事を読む上での注意点
当記事はプログラミング学習を開始して日の浅い業界未経験者が書いたものになりますので、技術的な内容などは誤りを含む可能性があります。予めご了承ください。

# サービス名

### 飯テログ
URL: https://meshitelog.com
GitHub: https://github.com/suzuyu0115/meshitelog
![placeholder.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493892

元記事を表示

フォームヘルパー セレクト編

# 初学者の備忘録
初学者の備忘録です。今回は前に投稿したフォームヘルパー編で出てきたフォームの種類selectについて詳しく紹介していこうと思います。応用編です。

## selectとは
フォームを選択している状態だと選択フォームが表示されるフォームレイアウトのことです。

閉じている状態
![CE859C94-3E56-49BC-8986-94D07BA64741.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3503032/4ba10f1e-827c-951e-6920-446bd725fe99.jpeg)

選択している状態
![85F92C8E-094E-4D60-B3CE-563845C93F3F.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3503032/bf54b1ac-e682-c37c-1ce2-d9410ffdbeb0.jpeg)

## 一覧
対象Modelから対象カラムに保存されてい

元記事を表示

フォームヘルパー実装(form_with)

# 初学者の備忘録
初学者の備忘録です。今回はForm_withヘルパー編

## フォームヘルパーとは
入力のためのフォームを作成するためにHTMLにはフォームタグというタグが存在する。
Railsのヘルパーメソッド「フォームヘルパー」を用いて、フォームタグを生成できる。
フォームヘルパーには3種類存在します。簡単に説明すると
・form_tag・・・入力フォームのレイアウトだけ作る
・form_for・・・form_withと内容はほとんど同じ。ただ、HTTPメソッドを定義してあげる必要があるのでアレンジができる
・form_with・・・form_forを楽に記述できるようにしたもの。HTTPメソッドを省略することができるが、ルーティングでonlyで囲めるような基本的なHTTPメソッドしか使えない。
になります。詳しくは[参考資料](https://pikawaka.com/rails/sub_category/form-helpers)をご確認ください。

今回はform_withを使用した入力フォームの実装方法になります

## 実装
それではfrm_withを使用した入力

元記事を表示

each文で出力するデータの数を指定する方法

# 目的
検索をかけても自分の理想とする記事がなかなか見つけることができなかったためこちらに使用方法をまとめます。

# 数の指定
例えばpostsテーブルがあったとして5つ取得したいと考えたときコントローラ ビューファイルに以下のように記述します。

“`ruby:posts_controller.rb
@posts = Post.all
“`
“`ruby:viewファイル
<% @posts.limit(5).each do |post| %>
# ~~~~~
<% end %>
“`
上記のようにeachメソッドを使う前にlimitメソッドで数を指定する流れでできました。

# まとめ
データを一部取得したいときに便利かと思いました。

# 参考記事
https://railsdoc.com/page/limit

元記事を表示

rails非同期処理 gem比較

実務で扱っているアプリケーション(Rails)に非同期処理を導入することになり、代表的なgemの特徴・メリット・デメリットを調査しました。せっかくなので簡単にまとめておきます。

## 調査対象のgem
– Sidekiq
– Shoryuken
– Rescue
– Delayed_job

## 比較表
GitHubスター数は2023年9月頃のものです。また「〇、△、✕」は条件次第で変わってくるものもあると思います、参考程度の認識でお願いします。

【Rails】Active Storageが提供するルーティングのプレフィックスを変更する方法

`config/application.rb`に以下の設定をすることでActive Storageが提供するルーティングのプレフィックスを変更できます。

“`config/application.rb
config.active_storage.routes_prefix = ‘/files’
“`

上記のようにした場合には`/rails/active_storage/blobs/*`から`/files/blobs/*`に変更されます。

【Rails】診断機能をラジオボタンを使って実装!


## 【Rails】診断機能をラジオボタンを使って実装!

今回はRuby on Railsで診断機能を実装します!
その時にチェックボックスではなくてラジオボタンを使って実装してみようと思います!
目次は以下の通りです!

### 1. コントローラー設計
### 1. データベース周り
### 1. Viewページ周り
### 1. ルート周り

## 1. コントローラー設計

“`ruby:travels_controller.rb
class TravelsController < ApplicationController def index end def new @travel = Travel.new end def show @travel = Travel.find_by(id: params[:id]) end def create @travel = Travel.new(travel_params) if @travel.save flash[:notice]

yml日本語対応

# 初学者の備忘録
初学者の備忘録です。今回は番外編といいますか、enumの記事でやったymlファイルを使用して日本語対応させる処理をもう少し詳しく記録として残しておこうと思います。

## 日本語対応
まずはアプリケーションのデフォルト言語を日本語にするコードを追記します。
“`diff_ruby:config/application.rb
   :
    :

module NaganoCake
class Application < Rails::Application : : +config.i18n.default_locale = :ja : : end end ``` 【2】 yml バリデーション 次にymlファイルにバリデーションを日本語表示させるコードを記述します。 ここまででymlファイルを作成していない場合、config/locales フォルダに ja.yml というファイルを作成しましょう。 ```diff_ruby:config/locales/ja.yml    ja: activerecord:

enum

# 初学者の備忘録
初学者の備忘録です。今回はenum編

## enumとは
enum とは、数値に意味を持たせることができるものです。数値に意味を持たせることのメリットは以下の通りです。

【メリット】
・決められた数値以外の登録が出来ないようにすることで安全性が高まる
・専用テーブルを作成しなくてもいい
・データベースに格納する時に、数値型の方がデータサイズが小さくなる

例えば支払い方法などにユーザー側がどの支払い方法を選択するか手入力するのではなく、enumを使用して選択式にしてあげることでクレジットカード、着払い、入金などの間違いが減るなどといったことです。

## 導入
【1】 Gem
enumは`enum_help`というGemなのでGemfileにenum_helpを記述します。最後の行で構いません。
“`ruby:Gemfile
   :
:
gem “enum_help”
“`

【2】 インストール
記述後、enum_help をインストールするために `bundle install` を行いましょう。
“`ruby:Gemfile
   $ bu

【初学者】API?パース?なにそれ?おいしいの?

# はじめに
お疲れさまです。
おおくまです。

今回は、個人的に私が苦手意識を持っている「**API**」と「**パース**」と向き合いました。
Railsでミニアプリを作りながら、理解を深めてみました。

# 環境
Ruby 3.2.2
Rails 7.0.8

# 注意点
:::note warn
私はプログラミング学習中で、初学者です。
内容に誤りがある場合があります。
コメント等で教えていただけると幸甚です。
:::

# APIとは
「**API**」とは、「**Application Programming Interface**」の頭文字です。
**インターフェース**とは、コンピュータ用語でいうと、「何か」と「何か」をつなぐものという意味を持ちます。
**つまりAPIとは、アプリケーション、ソフトウェア、プログラムなどをつなぐものという意味になります。**
APIを利用し、そのアプリケーションと連携することで、自分で1からプログラムを組む必要がなくなり、アプリケーション開発の効率化がはかれます。
アプリケーション開発側にとって、開発時間を短縮することができるのは大きな

dockerで立ち上げたrailsがnon-JS module files deprecated.のエラーでブラウザ確認できない

なぜ解決したのかいまいちピンと来てないが、解決できたので、覚書き。

### 前提

バックエンドをrails api、フロントエンドをreactにて WEBアプリ制作中に直面したエラーについて。

rails s でサーバー立ち上げてブラウザ確認しようと思いlocalhostにアクセスすると、アクセスできずにコンソールに以下のエラーが表示されていた。

“`
non-JS module files deprecated.
“`

### 経緯

そもそも docker compose upをしたときに、

「railsのgemがインストールされてないよ」

というエラーが出ていた。

そのため、docker compose run api bashにて手動でコンテナ内部でbundle installして無理やりrailsサーバーを立ち上げていた。

したがって、gemのインストール周りが原因なのだろうとは予想できていた。

### 実際のymlファイルの中身

docker-compose.ymlファイルの状態を確認してみると以下の状態。

“`
version: ‘3.9’

Sidekiq Shoryuken Rescue Delayed_job
GitHubスター数 12.7k 2k 9.3k 4.8k