Rails関連のことを調べてみた

Rails関連のことを調べてみた
目次

【初心者向け】UbuntuでRailsアプリを本番環境でデプロイするためのマニュアル

# 本記事の目的

 プログラム(Ruby on Rails)を触ってきたが、そろそろデプロイしてみたいと思ったときに、色々な記事とにらめっこしながら苦労してなんとかデプロイに漕ぎつけたので、もっと簡単にまとめられたものがあればいいなと思い、本記事を作成いたしました。

# 参考記事

たくさん見たのでどれがどれだか覚えていません。

***

 かなり初心者を意識して本記事を書いたので、Qiita初心者のためにこういうものを書いておきました。

Qiita記事の見方

+ ファイルを編集する場合
+ 1行目(?)にファイル名が書いてある
+ 2行目(?)からファイルに記述などする内容が書いてある

〇具体例

“`txt:ファイル名
ファイルの中身
“`

+ コマンドライン(ターミナル・コマンドプロンプトなど)を編集する場合
+ 先頭に$マークがついている
+ コピペするときに$マークを外す必要がある

〇具体例

“`
$ echo ‘Hello, World’
“`
「$」がコマンドラインを表す記

元記事を表示

Railsでのユーザー削除の実装方法

# はじめに
この記事では、Railsでユーザーを削除する方法について紹介します。
追加で削除時に確認ダイアログを表示させ、削除が成功したかどうかを通知する仕組みも紹介します。

# 1. ルーティング設定
config/routes.rb ファイルで、destroy アクションに対応するルートを設定します。
“`
resources :users, only: [:index, :show, :destroy]
“`

# 2. コントローラーの実装
まず、削除処理はコントローラーの **destroy** アクションで行います。削除が成功した場合には一覧画面へリダイレクトし、失敗した場合には個別詳細画面にリダイレクトしてエラーメッセージを表示します。
“`
def destroy
if @user.destroy
redirect_to users_path, notice: ‘ユーザー情報が正常に削除されました’
else
redirect_to user_path, alert: ‘削除に失敗しました’
end
end
“`
***補足***

元記事を表示

【Rails】json形式のレスポンスを整形して、画像ファイルのURLをフロントに渡す方法

## はじめに
Ajaxでコメント一覧の表示・コメント投稿の機能を実装する際に、コメントした人のアバターも入れたかったのですが、やり方が分からなくて苦戦したので実装方法を残しておきます。

## やりたいこと
javascriptからaxios.getでリクエストを送った際に下記の情報がほしい
– commentの内容
– commentした人のusername
– commentした人のavatar

## 状況
– 関連するモデル
– Userモデル
– Commentモデル
– Proflieモデル
– 各モデルの関連性
– User has_many commnets
– User has_one profile
– Post has_many commnets
– 各モデルに紐づく要素(今回の件に関係するところのみ)
– profilesテーブルにavatar画像がある
– commentsテーブルにcontent(コメントの内容)がある
– usersテーブルにusernameがある

## やり方
#

元記事を表示

【Rails】gem ‘kaminari’ と Tailwind CSS + daisyUI でページネーションをカスタマイズする

# はじめに
こんにちは、ゆうき(@yuki31100725)と申します。
現在、プログラミングスクールに通ってRuby on Railsを学習しております。

:::note warn
私はプログラミング学習中で、初学者です。
内容に誤りのある場合がございます。
もし間違いがあればご指摘いただけますと幸いです。
:::

# 記事の概要
gem ‘kaminari’を導入してページネーションを実装した際、導入済みだったTailwind CSS (+ daisyUI)を用いてレイアウト調整を試みました。

本記事では、実装例とともにレイアウト調整の手順についてご紹介できればと思います。

# 記事のゴール
gem ‘kaminari’でページネーション実装後、Tailwind CSS (+ daisyUI)を用いて下記のようなレイアウトにすることを目標としています。

【レイアウト調整前】
View側の繰り返し処理に対応してJavaScriptで動的にidを取得する方法

## はじめに
インスタ風のアプリを作成している中で、Ralis側で繰り返し処理をしている箇所にJavaScriptでcssクラスをつけたり外したりする処理 などの実装に苦戦したので、実装方法を整理してアウトプットします。

## やりたいこと

記事の一覧画面でAjaxを使って、いいねができるようにしたい

### 問題
show.htmlのようなpost_idが一意に決まっているようなページをJavaScriptで操作するのではなく、
index.htmlのようなpostがたくさん表示されているページから各ポストのidを個別に指定して操作していく実装がわからなかったです。

#### viewはこんな感じ
“`ruby
– @posts.each do |post|
.card
= image_tag post.user.profile.avatar
= show_posttime(post)
= post.user.username

– post.images.each do |image|
= image_tag image

元記事を表示

【Rails】いいね機能の実装ー中間テーブルとはなにか?ー

## はじめに
初学者向けのRails講座には、大抵の場合いいね機能の実装が含まれていると思います。
ただ、いいね機能を実装するための”中間テーブル”は、概念的で理解しにくいところがあるため、自分の整理のためにもアウトプットします。

### 前提
– インスタ風のアプリを作成
– userがpostを投稿する感じ
– 他のuserのpostにいいねできる機能を作りたい

### 何がしたいのか
– いいね機能を実装したい
– postの一覧画面(post/index.html)からいいねできるようにしたい

### どうする必要があるのか
– 中間テーブル(likesテーブル)を作成する
– 一意性制約をつける
– likesテーブルを通していいねしたPostを取得できるようにする
– routesの工夫

## 実装方法
### 中間テーブルを作る
1. 普段通り`rails g model Like`でモデルを作る
1. マイグレーションファイルを編集
1. reference でuserとpostを追加
1. 複合インデックスを追加し、一意性制約をつける
1.

元記事を表示

PagyとTurbo Framesで手動無限スクロールをセットアップするための完全ガイド

最近仕事で、pagyを使ってボタンを押すたびに情報が出力される手動の無限スクロールを実装する際に苦労したので同じように苦労している方のために説明したいと思います。
# 参考にした実装
https://www.colby.so/posts/pagination-and-infinite-scrolling-with-hotwire

# 完成デザイン
![スクリーンショット 2024-09-16 22.45.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3524128/423f0358-9fcc-87ca-c85d-ae575863cf71.png)
moreボタンを押下すると表示が増え、取得した情報がなくなるとボタンも消えます。
![スクリーンショット 2024-09-16 21.26.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3524128/af72ecf0-9047-1c28-2ad6-1376be

元記事を表示

コメントに対する返信機能 モデルの親子関係を自己結合で実装

この記事はプログラミング学習者がアプリ開発中に躓いた内容を備忘録として記事におこしたものです。内容に不備などあればご指摘頂けると助かります。

## 記事投稿の背景
ここではXのクローンサイトを作成中に実装した機能についてご紹介します。投稿に対してコメントをする機能までは実装していたのですが、コメントに対する返信機能を実装する時に実装方法が分からずに調べた内容となります。

## 実装したコードの紹介と解説
“`ruby:マイグレーションファイル
class AddParentIdToComments < ActiveRecord::Migration[7.0] def change add_reference :comments, :parent, foreign_key: { to_table: :comments } end end ``` - `parent_id`というカラムをcommentsテーブルに追加します。 - `foreign_key: {to_table: :comments}`の部分でこのカラムにforeign_keyとしての制約を与え、そのキ

元記事を表示

cannot load such file — sassc のエラー

# エラー文
ローカルホストを立ち上げたら
“`
cannot load such file — sassc
“`
のエラーが出た

# 解消法
VSCodeの左のツリーから Gemfileを探して,
“`
gem ‘sassc-rails’
“`
を追記.
その後ターミナルで
“`
bundle install
“`
すればインストールされて使えるようになる.ローカルホストの立ち上げ直しが必要?

元記事を表示

Rails6 gem serviceworker-rails で PWA化

# はじめに
WebアプリケーションをネイティブなアプリのようにできるPWA化に憧れて、実装してみました!
紆余曲折しましたがなんとか完成!
忘れないうちにまとめておこうと思います!

おおまかな流れは、こちらのREADMEを参考にしています↓

https://github.com/rossta/serviceworker-rails

# 前提
Ruby 3.1.2
Rails 6.1.7.7

Rails6以降の記事が少なくて…!苦戦しました💦

# Serviceworkerの導入

#### gem導入

“`Gemfile.
gem ‘serviceworker-rails’
“`

“`
$ bundle install
“`

ファイルはコマンドを実行すれば、自動作成してもらえます

“`
$ rails g serviceworker:install
Running via Spring preloader in process 31804
create app/assets/javascripts/manifest.json.erb

元記事を表示

【勉強】大学院生がRuby on Rails勉強してみた

## はじめまして
こんにちは.理系大学院生(数学専攻)です.
備忘録的に文章を残しておこうと思います.誰かの役に立てば万々歳ぐらいのやつです.就職した後に自分で見て赤面してくれー(笑).

## どんなひと?
AtCoderで競技プログラミングをやったりちょっっとだけ研究でプログラムを書いたりしているだけで,あまりにも開発経験が浅いということだけ先に.
競プロでPython,研究でC言語を使っています.

最近就活しなきゃなーってなってインターンに参加してみたはいいものの,本当に参加しただけになってしまった気がしてる(一応選考ルート乗ってみるけど不安)

## エンジニアインターンに参加してみて分かったこと
### ①エンジニアのしゃべってる言葉が分からない
くらす?えらーはんどりんぐ???いんすたんす?????みたいな.話に全然ついていけなくてめちゃくちゃ迷惑かけました
### ②バックエンドでRuby on Railsが使われがち
私が見てる会社だけかも.MVCモデルおもろそう.
### ③プログラミングやっぱりたのしい!
これは本当に気付けて良かったこと.エンジニアたのしそう.

元記事を表示

課題ドリブンな個人開発で「Members Hub」というWebアプリを作った

# はじめに

この度、[Members Hub](https://members-hub.onrender.com/) というWebアプリを開発しました。

サークルや部活などの「チーム」を対象として、メンバーのプロフィールを検索して閲覧できるプラットフォームを提供するためのサービスとなっています。

開発の記録として、この記事を残すことにします。

![linkedin_banner_image_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3657525/af9815af-1596-12bd-9c67-4c8b41d2ac98.png)

### サービスURL
https://members-hub.onrender.com/

:::note warn
~~Renderの無料枠でデプロイしています。そのため、サイトの立ち上がりに20〜30秒かかる可能性があります 。~~
:::
:::note notice
上の件ですが、[Cloud Scheduler](https://cl

元記事を表示

Rust+Locoでサービス開発してShuttleにデプロイまで試してみる

# Locoとは

RailsにインスパイアされたRust製のウェブアプリケーションフレームワークです。

https://loco.rs/

主な機能はこんな感じです。Railsに慣れていればとても親しみやすい構成です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64098/ae3fc5d1-2abc-75d7-4ecf-a4e97ad599da.png)

※MVCではありますが、ViewはJSONがデフォルトなので、RailsのAPIモードのような感じです。

# Shuttleとは

Rust用のHerokuのような感じです。Rustアプリケーションを簡単にデプロイできます。
Postgresqlなどのサービスもある程度無料で使えます。
Heroku同様、コマンド1つでデプロイできてSSLのURLが付与されて即アクセスできて便利です。

https://www.shuttle.rs/

# 作ったもの

[haikunator](https://github.com/usm

元記事を表示

【個人開発】ソロ活をお助け!ひとり外食専用投稿アプリを作成しました🍽️【Rails】

# はじめに
こんにちは、なかじ(@nakayama-bird)と申します。
現在、プログラミングスクールに通ってRuby on Railsを学習しております。
今回スクールの卒業制作として、ひとり外食に特化した飲食店の投稿アプリを作成しました。

**サービスURL**
[Me Time Meals | ひとり外食投稿アプリ](https://www.metime-meals.com/)
![ogp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760414/426caa33-0097-02b6-a57c-10479f3a495b.png)

**リポジトリ**

https://github.com/nakayama-bird/metime-meals

:::note warn
私はプログラミング学習中で、初学者です。
内容に誤りのある場合がございます。
もし間違いがあればご指摘いただけますと幸いです。
:::
## 目次
[1.アプリの紹介](#1-アプリの紹介)
[2.技術構成](#2-技術

元記事を表示

【Rails】delete_allでエラーが発生する

## はじめに
Railsのアップデート中にdelete_allを使用している箇所でエラーが出たので、その対応をまとめます。

## 問題
コード
“`ruby
User.delete_all(company_id: company.id)
“`

エラー文
“`ruby
wrong number of arguments (given 1, expected 0)
“`

## 解決方法
Rails7では、delete_allに引数を取れなくなっているので、whereを使用するように修正します。
“`ruby
User.where(company_id: company.id).delete_all
“`

## 参考
https://qiita.com/migaruna_debu/items/ad685c6d75d7af5fa7d9

元記事を表示

[ Rails ] アプリ内のコメント通知をLINEで行う方法

はじめに

こんにちは!
個人開発アプリの通知機能のまとめ記事です。
全3回構成となっており、今回は最終回として、アプリ内のコメント通知をLINEで行う方法について説明します。

個人開発のまとめ記事はこちらからご覧ください。

https://qiita.com/CarBoss1996/items/63c14260fc7fe65da78e

前回記事たちはこちらからご覧ください。

https://qiita.com/CarBoss1996/items/e619335206076301e00f

https://qiita.com/CarBoss1996/items/fba0f499160f0d4530d7

開発環境

・Ruby on Rails 7.1
・Ruby 3.2.3

完成物

ユーザーの投稿に新規コメントが作成されると、LINEに通知が送られます。
通知にはリダイレクトURLも含まれており、簡単にアプリに戻ることができます。

![image.png](https://

元記事を表示

RSwagを使ったAPI仕様書の自動作成

## 前置き

公式Docにも掲題手順はありますが、備忘録として自分の言葉でも残して置こうと思い書きました。

### 公式Doc

https://github.com/rswag/rswag?tab=readme-ov-file#enable-swagger-endpoints-for-swagger-ui

### この記事で説明すること
– RSwagを使ったAPIDoc自動生成する環境構築

### この記事で対応しないこと
– レスポンスのプロパティ情報の生成
– デプロイツールを使った場合のDoc自動作成

## 手順

### RSwagインストール

gemファイルに次の行を追加
`gem ‘rswag’`

app環境のCLIで

“`shell
bundle install
“`

インストールジェネレータを実行

“`shell
rails g rswag:install
“`

このコマンドでswaggerのAPI仕様書用のルーティングが自動作成されるので、アクセスできるか確かめてみる。
`/api-docs` にアクセス(例:http://127.0

元記事を表示

プロフィール画像の編集を非同期処理で実装する方法

## はじめに
railsのCRUD操作には慣れてきましたが、JavaScriptを使った非同期処理にまだまだ手こずっているので、学習記録として実装した非同期処理を記載します。
特に今回の実装ではchatGPTにかなり助けられた面があるため、なぜそのコードにしているのか、という点も含めて言語化していこうと思います。

## やりたいこと
![20240915_recording.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3875060/54a3a46d-6e39-79e5-b899-29421081bf27.gif)

– JavaScriptから画像をPOSTする
– POST後非同期処理でprofile画像を表示する

### 具体的な方法
– axiosとrails-ujsを導入し、javascriptからpost/putする
– javascriptでプロフィール画像の設定状況を確認し、条件に応じて画像の出し分けをする

### 前提
– rails6を使用
– UserとProfileは1

元記事を表示

オブジェクトとハッシュを照合するには?flattenメソッドの使用

この記事はプログラミング学習者がアプリ開発中に躓いた内容を備忘録として記事におこしたものです。内容に不備などあればご指摘頂けると助かります。

###### 制作しているクローンアプリの中でControllerで取得したある2つのデータをハッシュとオブジェクトの文字列という形で保存していました。これらのデータを称号する為に調べて実装した内容を掲載します。

## 実装したコードの紹介

“`ruby:tweets_controller.rb
def show
@tweet = Tweet.includes(images_attachments: :blob).find(params[:id])
@comments = @tweet.comments.includes(user: { icon_attachment: :blob }, images_attachments: :blob)
@replies = {}
@comments.each do |comment|
@replies[comment.id] = Comment.whe

元記事を表示

yarn install –check-filesをしたらnode-sassが読み込まれないエラー

自分用備忘録として作成
(初心者のため、もし違っていたら教えていただけると幸いです。)

課題でクローンしたアプリケーションを立ち上げるためにyarn install –check-filesをしたら、
error /Users/yec2016/workspace/dpro/rails_refactoring_task/node_modules/node-sass: Command failed.とエラーが出た。

環境は、
mac
node -v 18.18.0
node-sass -v 4.14.1
yarn -v 1.22.22

解決方法としては、node-sassのバージョンに対応できるnodeバージョンまで下げる。(pythonが読み込めないというエラーもあったため、pythonをインストールしたが、意味がなかった。)

#node-sassのバージョン確認
npm list node-sass
football_info_for_refactoring@0.1.0 /Users/xxx/workspace/xxx/rails_refactoring_task
└─┬ @

元記事を表示

OTHERカテゴリの最新記事