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

Rails関連のことを調べてみた2022年03月30日
目次

【Rails】フォーム送信した値の前後空白改行を削除する(全角スペース削除対応)

Railsで`form_with`のテキストエリアに入力された値の前後の改行や空白を削除したい。

## 実装

特に難しい内容でもないので実コードを書きます。

“`ruby:post.rb
class Post < ApplicationRecord validates :content, presence: true before_save :trim_content private def trim_content content.strip! end end ``` `strip!`メソッドで**前後の改行や空白**を削除できます。 `form_with`から入力した値を加工するチャンスはその他にも`JavaScript`や`Controller`内などありますが、`Model`内でやるのが一番管理しやすいかと思います。 ### 全角スペースの削除対応 ちなみに、`strip`や`strip!`メソッドですが、全角スペースは対応していません。 そのため、下記のような文字列の場合は不完全な結果になってしまいます。 ```ruby # 先

元記事を表示

【Rails】RSpecのテストコードの書き方

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

## RSpecのテストコードの構成
RSpecのテストコードは以下のように記述します。

“`article_spec.rb
RSpec.describe Article, type: :model do
context ‘タイトルと内容が入力されている場合’ do
let!(:article) do
Article.new({ title: ‘RSpecテスト’, content: ‘RSpecテストの内容’ })
end
it ‘記事を保存できる’ do
expect(article).to be_valid
end
end
end
“`

* __describe__
大分類のようなもので、何についてテストをするかを記述します。

元記事を表示

【Ruby】条件演算子を使って指定日時になると画像が切り替わるようにする

非エンジニアがどうしても未知のRubyをいじらなくてはならず、調べながら格闘した記録です……

### 条件演算子とは

`条件式 ? 真の時の値 : 偽の時の値`

>条件演算子(三項演算子とも呼ばれます)は条件式の結果によって異なる値を返す演算子です。
> https://www.javadrive.jp/ruby/if/index10.html

今回はこれを使って画像の表示を切り替えていきたいと思います。

### やりたいこと
**2022/05/01 00:00:00以降に”new_photo.jpg”を表示させたい。それまでは”old_photo.jpg”を表示させておきたい。**

“`index.html.erb
RailsにVue3を入れて、webpack-dev-serverで失敗 ”export ‘default’ (imported as ‘Vue’) was not found in ‘vue’

## 環境
Rails 6.1.4
Vue.js 3.2.31

## 背景
`bin/webpack-dev-server`を実行して以下のエラーが出た。
“`shell
ERROR in ./app/javascript/packs/hello_vue.js 11:16-19
“export ‘default’ (imported as ‘Vue’) was not found in ‘vue’
“`

# 対処法
Vueなんて無いよと言われたので、hello_vue.jsを見に行きました。
“`javascript
import Vue from ‘vue’
import App from ‘../app.vue’

document.addEventListener(‘DOMContentLoaded’, () => {
const app = new Vue({
render: h => h(App)
}).$mount()
document.body.appendChild(app.$el)
})
“`
何も異変に気づかず、、
公式ドキュメン

元記事を表示

rails でアプリを立ち上げ時に、データベースを指定する方法

# 結論

“`
% rails new -d データベース名
“`
これでデータベースを指定することができます。

ちなみに,

## データベースを作成する方法
“`
% rails db:create
“`
これで指定したデータベースを作成することができました。

これはまだ、データベースというデータを入れる箱を作ったに過ぎません。

例えるなら

弁当作った←弁当箱を作った段階です。

## 中身のデータを作成する方法

“`
% rails g model モデル名(単数)  カラム名:データ型(カラム名:データ型は複数指定可能)
“`
これで例えるなら弁当箱のどこに何を入れるのかなんとなく決めた状態です。

実は、この時に`maigrateファイル`というファイルが作成されてます。`migrateファイル`とはデータベースの中身の表(テーブル)の構造を指定するファイルです。例えるなら弁当箱の仕切り(アルミ箔やバランなど)ですかね、、、

ちなみに
“`
g = generate : 生成する
model : 模型
column : データ表の縦列
データ型 :

元記事を表示

【Rails】イメージファイルをjpegでデプロイしてこけた話

イメージファイルは
app/assets/images/no_image.jpeg

erbでは
`<%= image_tag asset_path(“no_image.jpeg”) %>`

開発環境では、ちゃんとno_image.jpegが表示されていた。

# 本番環境でエラー

アセットプリコンパイルをして本番環境サーバーを起動。
no_image.jpegが表示されるページでエラーとなった。

“`
ActionView::Template::Error (The asset “no_image.jpeg” is not present in the asset pipeline.):
“`

# 原因
railsガイド曰く
`productionモードでは、Railsはプリコンパイルされたファイルをpublic/assetsに置きます。`
とのことなのでプリコンパイルされたファイルを見てみる。

“`
$ ls public/assets/
省略〜〜
no_image-d80ba23233558abbd91f408cf7c9c178d645bd0cb2ddbffe

元記事を表示

【Rails7 × Next.js】Dockerで環境構築してみる。

# 概要
Rails7がリリースされたから環境構築の手順があれば後から楽だなと思ったから、Next.jsをフロントにする前提で構築してみました。

# 環境
Ruby: 3.1.1
Rails: 7.0.2.3
Postgres: 14.2
Docker: 20.10.13
docker-compose: 2.3.3

# 手順
## 1.プロジェクト立ち上げ前にファイルを作成する
以下の構造でファイルを作成する。

“`ruby
.
├── frontend
   ├── Dockerfile
├── backend
   ├── Dockerfile
   ├── Gemfile
   ├── Gemfile.lock # 空でOK
├── docker-compose.yml
“`

## 2.docker-compose.ymlを記述する

“`docker-compose.yml
version: ‘3.7’

services:
postgres:
image: postgres:11.6-alpine
port

元記事を表示

コメント機能の実装

# コメント機能の実装
## 概要
– ポートフォリオとして作成する学習マッチングアプリの中で、コミュニケーションツールを実装したい。
– twitterをイメージしたツールにしたい。
– ユーザ間のコミュニケーションを想定する。
## アソシエーション
![9cf19332afde24ac92928cee7c83ac90.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1923339/e10317da-4c74-cea8-4cd6-501d95ebb0a1.png)
## テーブル定義
### Commentsテーブル
[![Image from Gyazo](https://i.gyazo.com/546427b61330905b11df1bdc51113a00.png)](https://gyazo.com/546427b61330905b11df1bdc51113a00)
### ReplyRelationshipsテーブル
[![Image from Gyazo](https://i.gyazo

元記事を表示

Bullet TrainでRailsの開発が何倍も速くなりました!

# Bullet Trainとは
[Bullet Train](https://bullettrain.co/)とはRailsをベースにして、多くのサービスに普段ついているユーザー登録・認証やAPI関係の機能など、ビューのテンプレートなどを、新しいアプリを作った時点で全部提供してくれる、ウェブサイトを作るためのSaaSフレームワークです。

開発自体がRailsとほとんど変わりません。普通の線路(Rails)より新幹線(Bullet Train)のごとく、サイトの開発をとても速くしてくれるフレームワークですので、皆さんにぜひ一度でも使ってみていただきたいと思います。

# 「メニューはお任せ」
Railsを普段やっている人であれば「[メニューはお任せ](https://rubyonrails.org/doctrine#omakase)」という概要について聞いたことがあるでしょう。
> How do you know what to order in a restaurant when you don’t know what’s good? Well, if you let the ch

元記事を表示

【個人開発】「タバコ」辞めたくないけど減らしたい人へ向けた育成型喫煙管理アプリ【NICOTTI】(ニコッチ)を作成しました。

![nicotti_wantedly.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2496320/5e7b15f1-eed4-0712-092d-cd3b9deabbc4.jpeg)

## サービス紹介

「禁煙」ではなく「減煙」を目的とした、喫煙管理アプリです。
NICOTTI(ニコッチ)を育成しながら喫煙を楽しく管理できます。

https://www.nicotti.jp/

https://github.com/asakanobuaki/nicotti/

## アプリを作ったきっかけ
私には喘息持ちでヘビースモーカーな兄がいます。
喫煙を控えるように伝えても「禁煙したら逆にストレスで死ぬ」といつも言われるので、調べてみると多くの人が同じような経験あるとのこと。

喫煙をする人に多いのが「なんとなくの喫煙」で余分にタバコを吸ってしまうことです。(自分がそう)「禁煙」と聞けば大変そうですが、「余分な喫煙」をなくすくらいならできそうな気がします。
せめて、私の兄に喫煙本数を減らさせることはで

元記事を表示

【Rails】背景色・色・フォントなどランダムに投稿したい!!

# 【Rails】背景色・色・フォントなどランダムに投稿
## はじめに
本記事では
Rubyの**Sample**メソッドを用いて実装を行なっています
## 下準備
興味のない方は飛ばしてOK

“`terminal:terminal
rails new sample
rails db:create
rails g model Example body:string
rails db:migrate
rails g controller examples
code .
“`

“`ruby:config/routes.rb
resources :examples
root ‘examples#index’
“`
“`ruby:app/controllers
def index
@examples = Example.all
@example = Example.new
end
def create
example = Example.new(example_params)

元記事を表示

検索機能の実装

# 検索機能の実装
## 概要
– 学習マッチングサイトを作成する。ユーザーが講座を作成して、ユーザー間で売買を行う。バイヤー側が、講座を様々な条件で検索できるようにしたい。
– 具体的には、カテゴリー、受講形態(オンラインかオフラインか)、アクセス先(住所かURLか)、価格(上限)、タグで検索できるようにしたい。
– カテゴリー、受講形態、アクセス先、価格はand検索、タグはor検索にしたい。
## アソシエーション
![0b5fbcf246ecc3190132d23b59ea7a28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1923339/de465090-247d-6bcc-3039-a723e0f98ce3.png)
## テーブル定義
– Lessonsテーブル
[![Image from Gyazo](https://i.gyazo.com/b80f2208176be59fa64d498ab6db603f.png)](https://gyazo.com/b80f2208176be59f

元記事を表示

【Rails6】詳細検索機能をgemなしで実装する

# 【Rails6】 詳細検索機能をgemなしで実装する
2022年1月からプログラミングの勉強をしております。詳細検索を実装した際に大変苦労したので皆さんの参考になるような記事を書きたいと思い筆を取りました。ransackgemなしでの詳細検索の実装になります。SQLの勉強にもなりますので、詳細検索を実装する際はぜひgemなしで実装してみてください。
# 開発環境
Rails: 6.1.4
Ruby: 2.6.3

# 目標
テーブルに登録されているすべてのカラムでAND検索を可能にする。(タグ検索も)
# 前提
検索対象projectテーブルは実装済み。タグは作成済み。
タグ作成で参考にさせていただいた記事
https://qiita.com/Kairi_Yasunnde/items/935dcdb8ec88b9ed9d91
# controllerの作成
`$ rails g controller searches search`
“`Ruby:controllers/searches_controller.rb
class SearchesController < Appli

元記事を表示

Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂3版 のコマンドまとめ

# 目的
Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂3版で学習したコマンドを随時まとめていきます。

最終的には、Ruby on Rails を AWSで動かします。

## コマンドまとめ

### ネットワーク関連のコマンド
「ping」「traceroute」「telnet」「nslookup」「dig」

## 個人的に使用したツール
* AWS構成図作成
https://www.diagrams.net/

元記事を表示

【Rails】RSpecの導入

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

## RSpecの導入
### RSpecをインストールする
Gemfileの group :test do に以下の2つを追記します。

“`:Gemfile
group :test do
gem ‘rspec-rails’, ‘~> 3.8’
gem ‘factory_bot_rails’, ‘~> 5.0’
end
“`

`factory_bot_rails`をインストールすることでテストデータの用意が簡単になります。

Gemfileの編集が完了したら、`bundle install`してください。
“`:ターミナル
$ bundle install
“`

インストールできているか確認します。

“`:ターミナル
$ bundle exec rspec –version

元記事を表示

タグ付け機能

# タグ付け機能の実装
## 概要
– ポートフォリオ作成として、学習マッチングサイトを作成。サイト内で講座を作る際にタグ付けを実装したい。
– ユーザーが自由にタグ付けできるようにしたい。
## 環境
– Rails 5.2.6
– ruby 2.6.3
## アソシエーション
![6ab4f133dfb54bd244def97a350b6d3e.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1923339/09bc2f44-8b8e-c54d-a0e1-acdbf83bc5d8.png)
講座(Lessonsテーブル)は複数のタグを持ち、タグ(Tagsテーブル)は複数の講座を持つため、講座:タグ=多:多となるため、中間テーブルとして、TagListsテーブルを作成した。
## テーブル定義
[![Image from Gyazo](https://i.gyazo.com/f0670c7ffdc63ac92e8c8b122e24a1a0.png)](https://gyazo.com/f0670c7f

元記事を表示

Railsでアプリ作成時に、使用可能なバージョンを確認する方法

# 結論

ターミナルで以下を入力

“`
% gem list rails
“`
これで使用可能なバージョンが表示されます

“`
*** LOCAL GEMS ***

rails (5.0.1, 4.2.6, 4.2.5, 4.1.6)
“`

## ちなみに
バージョンを指定してアプリを立ち上げる場合
“`
rails _5.0.1._ new アプリ名
“`
これで指定のバージョンでアプリを作成できます。

以上です

元記事を表示

rails_tutorial chapter11 <忘備録>

11章では、メールを使ったアカウントの有効化を実装します。
cookiesの実装と流れは似ているので、そんなに難しくはありません。
強いて言えば、mailerとsendメソッドを初めて使ったので少し戸惑いました。

ただ、mailerはcontrollerだと思えば、MVCの考え方に乗っ取っているので、分かりやすいです。

今回の流れは、以下の通りです。

:::note
(1)有効化トークンやダイジェストを関連付けておいた状態で
(2)有効化トークンを含めたリンクをユーザーにメールで送信し
(3)ユーザーがそのリンクをクリックすると有効化できるようにする
:::

ポイントとしては、

:::note
・ユーザーの初期状態は「有効化されていない」(unactivated)にしておく。
・ユーザー登録が行われたときに、有効化トークンと、それに対応する有効化ダイジェストを生成する。
・有効化ダイジェストはデータベースに保存しておき、有効化トークンはメールアドレスと一緒に、ユーザーに送信する有効化用メールのリンクに仕込んでおく。
※editアクションの代わりに、showアクションでもよいが

元記事を表示

2022/03/28、railsにてrefileをbundle installしようとしたら、少し変わったgitエラーが起きた時の対処法。(備忘録)

アプリ開発の下準備中、Gemfileに以下を記載。

“`
gem “refile”, require: “refile/rails”, github: ‘manfe/refile’
gem “refile-mini_magick”
“`

いつも通りにターミナルでbundle installしようとしたら、、、、

“`
fatal: remote error:
The unauthenticated git protocol on port 9418 is no longer supported.
Please see https://github.blog/2021-09-01-improving-git-protocol-security-github/ for more information.

Git error: command `git clone ‘git://github.com/manfe/refile.git’
“/home/ec2-user/.rvm/gems/ruby-2.6.3/cache/bundler/git/refile-197f44e

元記事を表示

【Stimulus】targetがある時だけ関数を実行する方法

# はじめに

Rails7 で Javascript を利用するときは Stimulus を使うのがデフォルトになっています。

特定のページで関数を実行する方法を書き残しておきます。

## 環境

– Rails 7.0.22
– Ruby 3.1.1
– Rspec 3.10.0
– stimulus-rails 1.0.4

## やりたい事

特定のページの時だけクラスを削除する関数を実行する

# 本文

Stimulus のライフサイクルコールバックと呼ばれる特別なメソッドを使用すると目的を達成することができます。

`TargetConnected()`を利用する

“`javascript:class_controller.js
import { Controller } from “@hotwired/stimulus”;

// Connects to data-controller=”class”
export default class extends Controller {
static target = [“class”];

classTa

元記事を表示

OTHERカテゴリの最新記事