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

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

【個人開発】MySQLにCRUDできるノーコードアプリをRailsで作ってみた

個人開発で作ったサービス【[shareCRUD](https://sharecrud.com “shareCRUD”)】を先日ベータ版にて公開しました。この記事は、個人開発でサービス作ってる・作りたいけど、事例を参考にしたい人向けに、開発したサービスのご紹介と、それを作るまでの経緯をまとめてみました。

# 作ったサービス【shareCRUD】

![sharecrud_demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172629/5ba8bf08-b9a8-f498-e65b-e259f8cdd492.gif)

**サイトはこちらです**→[https://sharecrud.com](https://sharecrud.com “shareCRUD”)

アプリ化したいDB(MySQL)につなげて、必要な設定をすると、ブラウザからGUIでCRUD(登録・検索・更新・削除)できる機能が作れます。イメージとしては、phpMyAdminみたいな機能をノーコードで作れるサービスです。

## ど

元記事を表示

【Rails】mysql2のインストールができない場合の対処法【MySQL】

## はじめに
 本記事は、プログラミング初学者が、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
 そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
 間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。

##mysql2のインストールができない場合の対処法

###環境
OS: MacOS Big Sur 11.6.1(M1 mac)
Ruby: 2.7.5
Rails: 5.2.6
MySQL: 5.7

###状況
データベースをMySQLに指定した上で`rails new`をした後に`bundle install`をしても以下のような文章が出力され、インストールできませんでした。
また、インストールができても`rails s`をした際に`Load Error`が出てしまう状況でした。

“`
linking shared-object mysql2/mysql2.bundle
ld: library not found for -lzstd
clang: error: linker command

元記事を表示

railsチュートリアル第十四章 [Follow]ボタン Ajax編

###[Follow]ボタン Ajax編
####Ajaxを使ったフォローフォーム
app/views/users/_follow.html.erb

“`html
<%= form_with(model: current_user.active_relationships.build, remote: true) do |f| %>

<%= hidden_field_tag :followed_id, @user.id %>

<%= f.submit "Follow", class: "btn btn-primary" %>
<% end %>
“`

###Ajaxを使ったフォロー解除フォーム
app/views/users/_unfollow.html.erb

“`html
<%= form_with(model: current_user.active_relationships.find_by(followed_id: @user.id), html: { method: :delete }, remote: tr

元記事を表示

railsチュートリアル第十四章 [Follow]ボタン(基本編)

###[Follow]ボタン(基本編)
Follow]/[Unfollow]ボタンを動作させましょう
そのために
Relationshipsコントローラが必要です。いつものようにコントローラを生成しましょう。

“`rb
ubuntu:~/environment/sample_app (following-users) $ rails generate controller Relationships
Running via Spring preloader in process 4782
create app/controllers/relationships_controller.rb
# コントローラ
invoke erb
create app/views/relationships
invoke test_unit
create test/controllers/relationships_controller_test.rb
# テスト
invoke helper
cre

元記事を表示

railsチュートリアル第十四章[Following]と[Followers]ページ

###[Following]と[Followers]ページ
どちらにもフォローの統計情報などのユーザー情報を表示するサイドバーと、ユーザーのリスト
サイドバーには小さめのユーザープロフィール画像のリンクを格子状に並べて表示する予定です。

####フォロー/フォロワーページの認可をテストする
test/controllers/users_controller_test.rb

“`rb
require ‘test_helper’

class UsersControllerTest < ActionDispatch::IntegrationTest def setup @user = users(:michael) @other_user = users(:archer) # テストユーザー end . . . test "should redirect following when not logged in" do get following_user_path(@user) # フォローの数を表示を要求 a

元記事を表示

RailsのViewの役割とRoutingについて

## はじめに
基本は備忘録
MVCについて役割ごとにまとめる機会があったので整理します。

## View
htmlファイル 拡張子がsample.html.erb

## 新しいページを作成する
(新たなコントローラとviewを作成 + routingの設定)

“`rb
# localhost:3000/home/topにアクセス可能
# 同じ名前のコントローラがすでにある場合コマンドが使えない
rails generate controller コントローラ名 アクション名

rails g controller posts index
“`

## link_to
aタグに変換する。

“`rb
# Prefixで設定
# rails routesでPrefixを確認
<%= link_to("文字列", post_path) %>
“`

“`rb
# urlで指定
# /で始める routingに合わせる
# postのroutingの時は{method: “post”}
<%= link_to("文字列", "/posts") %>
“`

## パーシャル

元記事を表示

RailsのControllerの役割

## はじめに
基本は備忘録
MVCについて役割ごとにまとめる機会があったので整理します。

## Controller
*ModelやViewとdateのやりとりをする*

## CRUD(クラッド)処理
システムに必要な4つの主機能

“`rb
C Create # データの作成
R Read # データの読み込み
U Update # データの更新
D Delete # データの削除
“`

*railsは7つを推奨している*

“`rb
index # データの一覧を表示する
new # データを新規作成するためのフォームを表示
create # データを新規作成し、データーベースへ保存

show # 指定したデータを表示
edit # データを更新するためのフォームを表示
update # データ更新

destroy # データ削除
“`

**一覧データの表示と作成**
**index**

“`rb
# DBから全てのデータ(@posts)を取得しViewに返却
#.order(created_at: :desc)で並び替え
@posts = Po

元記事を表示

RailsのModelの役割

## はじめに
基本は備忘録
MVCについて役割ごとにまとめる機会があったので整理します。

## Model
modelの役割はDB関連の処理
*date取得などの処理や、date自体の作成・削除*

## 新しいテーブルを作成
*モデル・マイグレーションファイルが作成される*
`db/migrate/`配下にmigrationファイル
`app/models/`配下にモデル

“`rb
# DBに変更を指示するmygration fileを作成
# カラムが複数個ある場合は,は不要 name:string mal:string
rails generate model Post content:text

# DBに変更を反映 id, created_at, updated_at, は自動生成
rails db:migrate

“`

“`rb
# データ型
integer 整数
float 少数
string 文字列
text 長い文字列
boolean 真偽値
“`

## 既存のtableにカラムを追加する
`db/migrate`配下

“`rb

元記事を表示

[Ruby on Rails]いいね、お気に入り機能の実装

#はじめに
お気に入り機能を実装する際に迷うことがあったため、アウトプットもかねて自分なりにまとめてみました。

#前提
下のようなER図にて、お気に入り機能を実装する。
すでに、userの新規登録及びgadjetの投稿、一覧画面、詳細画面の実装は済んでいる。
![ER.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1874224/fec7a921-6e3a-dc1b-79e3-7c8aee6097d8.png)

・Userはgadjetに対して、一つのお気に入りをすることができる
・Userとfavoriteは”1対多”の関係
・gadjetとfavoriteは”1対多”の関係

##開発環境
ruby ‘3.0.0’
Rails 6.0.3.4

#実装手順

##favoriteモデルの作成

上記ER図のように、モデルを作成する。

“`:ターミナル
rails g model favorite user_id:integer gadjet_id:integer
“`
マイグレーシ

元記事を表示

Rails 7のHotwireがどんなことをしてくれるものかを知りたいです

# はじめに

先月12月15日に Ruby on Rails 7.0 がリリースされたということで、自分でもその機能を試してみます。

リリースを伝えるブログ記事の日本語訳はこちらを読みました。

https://www.publickey1.jp/blog/21/rails_70nodejs.html

ここでは Hotwire について試してみます。

Hotwireは、[こちらの記事](https://world.hey.com/dhh/rails-7-will-have-three-great-answers-to-javascript-in-2021-8d68191b) では「It’s a complete alternative to heavy JavaScript client-side apps that speak JSON to a backend.」と説明されています。早速使ってみましょう。

# デモアプリケーション

[こちら](https://github.com/ktakase00/bustime_demo) にソースコードを置きました。

# プロジ

元記事を表示

railsの中間テーブルのわかりやすい命名

結論

railsの中間テーブルは多対多の関係にある2つのテーブルを結合した命名が多いが、関係性を表現する命名にするべき。

例:
usersテーブルとpoliciesテーブルの中間テーブルならagreementsテーブル(同意)
(観測範囲で言うと、policies_users, users_policies、user_policiesのような命名がされるケースが多い。)

詳しくは以下の記事に書かれています。

https://qiita.com/tkawa/items/dc3e313021f32fd91ca6?utm_campaign=popular_items&utm_medium=feed&utm_source=popular_items

背景

リレーショナルデータベースは「多対多」の関係をうまく扱うことができないため、
中間テーブルという第3のテーブルを使って関係性を表現します。

これまでrailsの中間テーブルの命名は一般的には多対多の関係の2つのテーブルの名前を結合したものが多かったです。(例: policies_users)
これは、おそらくrails1,

元記事を表示

Dockerでソースコードが反映されない時の対処法(Rails使用)

1,development.rbの記述を変えます

~~~
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
~~~

~~~
config.file_watcher = ActiveSupport::FileUpdateChecker
~~~
Eventedを削除

2,コンテナ再起動

~~~
docker-compose down -v
docker-compose up -d
docker-compose run web rails db:create
docker-compose exec web bundle exec rails db:migrate
~~~

これで無事反映されました!
※再起動などは不要かもしれませんが自分の場合書き換えだけだと変わりませんでした

元記事を表示

[Rails]deviseの導入手順

ユーザー管理機能を簡単に実装できる**devise**というGem
初めて学んだ時は理解できず難しいと感じてたけど、使ってるうちに理解できてきて便利さに感動!
なので忘備録として記事にしときます。

# deviseの導入手順
##### ①Gemfileを下記のように編集

“`ruby:Gemfile
#最後の行に追記
gem ‘devise’
“`

##### ②下記のコマンドを実行してdeviseをインストール

“`zsh:ターミナル
% bundle install
“`
:::note warn
インストールしたGemの反映するタイミングはサーバー起動時なので、ローカルサーバーを起動しているのであれば再起動
:::

##### ③以下のコマンドを実行して設定ファイルを作成
追加したdeviseの「設定関連に使用するファイル」を自動で生成するコマンド
deviseを追加したらとりあえず1度実行しておく、くらいの認識で

“`zsh:ターミナル
% rails g devise:install
“`

このようなログが流

元記事を表示

Ruby on Railsの環境構築【初心者用】

# 動機

シンプルに手順を示した記事が無かったため作成。
できる限りシンプルにまとめました!
とりあえず手元のPCでRailsを動かせるようになることを目的としていますので細かい説明は省略しています。
環境構築が終わってから、コマンドで具体的に何を行っているのか、一つずつ調べていきましょう。

# 環境

macOS Monterey 12.1

# ひたすらインストールしていく

ターミナルを開いてコマンドを入力していってください。
### Command Line Tools

コマンドラインツール

“`
xcode-select –install
“`

### Homebrew

macのパッケージ管理ツール

“`
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)”
“`

### rbenv

Rubyのバージョン管理ツール

“`
brew update
brew install

元記事を表示

【AWS】デプロイ後の修正を反映させる方法

#はじめに
「AWSでデプロイしたはいいけど、デザインを修正したくなったよー」という人に向けた記事です。

#デプロイ後の修正を反映させるには

###masterにpushする
まずはローカル環境で修正したファイルをGitHubのmasterブランチにpushします。

“`
$ git push origin master
“`

###git cloneしたディレクトリにpullする
EC2インスタンスが開始されていることを確認してから、sshコマンドで接続します。

“`
$ ssh -i 秘密鍵.pem ユーザー名@ipアドレス
“`

デプロイ時にgit cloneしたディレクトリに移動してpullします。

“`
$ git pull origin master
“`

###アセットをプリコンパイルする
修正がCSSなどの場合、アセットファイルをプリコンパイルする必要があります。
簡単にいうと、JavaScriptやCSSのアセットを通信量削減のためにギュッとまとめる仕組みです。
開発環境ではこの仕組みが自動で働いてましたが、
本番環境では行われないため手動

元記事を表示

active_hashを使って都道府県モデルを作る方法

#はじめに
 
 **今回は都道府県を選択する時に使う「active_hash」について新たに学んだので備忘録としてまとめます。**active_hash住所などを選択する時に都道府県を選択するプルダウンを作るために必要です。ユーザー登録をする時にはよく使いますが、47個の都道府県を毎回実装するのは大変です。そんな時に、active_hashを使うと簡単に効率よく実装する事ができます。

#active_hashの実装方法
active_hashの実装方法は以下の手順です。

1gemfile
2疑似モデルを作る
3対応するカラムを作る
4アソシエーションを定義する
です。
**今回はuserモデルに都道府県を保持させたい場合を想定します**

それでは順番に説明していきます。

# gemfileの導入
 まずはgemfileを導入します。

“`
## Gemfileに以下を記述
gem ‘active_hash’
“`

その後bundle installを忘れずします。

# 都道府県の擬似モデルを作る
 次に都道府県を入れた擬似モデルを作ります
まずは実施のコードを

元記事を表示

【CircleCI】bundle installされない場合の対処方法

railsでポートフォリオ作成時にCircleCIを導入したところ、
`bundle exec rails db:migrate`実行時にエラーが発生しました。
ログ上では`bundle install`してたが`bundle install`しろとのこと。。。

ググっても解決策が見つからず、かなりハマってしまったので記録しておきます。

#エラー内容
![スクリーンショット 2022-01-11 14.11.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1292797/fa92a9e5-30e2-7fc6-a557-12b83231c0c7.png)

“`:エラーメッセージ
Could not find rake-13.0.6 in any of the sources
Run `bundle install` to install missing gems.
“`

#解決策

>プレフィックスが「 circleci / 」のレガシーイメージは、 2021 年 12 月 31 日に廃止

元記事を表示

Ruby on Rails 日時データを年月日の形式で表示する

#日時データを年月日で表示したい

scheduleというテーブルの中から、startという日時データのカラムの値を表示したい時、

“`
<%= schedule.start %>
“`
↑こんな感じで書くと

![スクリーンショット 2022-01-11 21.34.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2449886/3882c94a-c11c-901d-f20d-bc0d54a3ebb2.png)
↑こんな感じで表示される。
これを、年月日だけで表示していきたい。

#対処法

“`
<%= schedule.start&.strftime("%Y年 %m月 %d日") %>
“`
↑このように書くと、
![スクリーンショット 2022-01-11 21.56.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2449886/ffa4b769-8cf1-736a-c061-18749bac

元記事を表示

【Rails】ActionController::RoutingError (uninitialized constant HogeControllerの対処法

症状

railsで新たにアクションを追加したときに下記エラーメッセージが表示されました。
翻訳すると「初期化されていない定数hogeController」でした。

“`terminal:error
ActionController::RoutingError (uninitialized constant HogeController
“`

routeファイルとhoges_contollerファイルは以下です。

“`ruby:routes.rb
post ‘hoge’, to: ‘hoge#update’
“`

“`ruby:hoges_contoller
class HogesController < ApplicationController end ```

解決方法

routeファイルのhogeをhogesに変更することで解決しました。

“`ruby:route.rb
post ‘hoge’, to: ‘hoges#update’
“`

下記の記事ではファイル名が間違っていたため同様のエラーが出ていたようです。
この

元記事を表示

【Rails】dynamic constant assignmentの対処法【Ruby】

症状

railsで以下エラーが発生しました。
翻訳すると、「動的定数の割り当て」でした。

“`terminal:error
SyntaxError (C:/app/controllers/api/v1/users_controller.rb:21: dynamic constant assignment
YOUR_DOMAIN = ‘http://localhost:3000’
^~~~~~~~~~~
“`

“`ruby:users_controller.rb
def update
user = User.find_by(id: params[:userId])

DOMAIN = ‘http://localhost:3000’

if(user.save!(user_params)
redirect_to DOMAIN + ‘?success=true’,
else
redirect_to DOMAIN + ‘?canceled=true’,
end

end
“`

解決方法

Appli

元記事を表示

OTHERカテゴリの最新記事