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

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

【update_attributesが使えない】NoMethodError in RegistrationsController#update【Rails】

## はじめに

Ruby on Railsにて、以下のエラーが発生しました。

“`ruby
NoMethodError in RegistrationsController#update
undefined method `update_attributes’ for #
“`

## TL;DR

update_attributesではなくupdateを使用することで解決しました。

Rails6からupdate_attributesは非推奨になっているようです。

## 参考

[https://railsguides.jp/6_0_release_notes.html#active-record-非推奨化](https://railsguides.jp/6_0_release_notes.html#active-record-%E9%9D%9E%E6%8E%A8%E5%A5%A8%E5%8C%96)

https://github.com/rails/rails/blob/v6.0.2.1/activerecord/lib

元記事を表示

【Rails7 とLaravel10】modelを担うファイルの記述方法比較

## 前提
両者PostモデルとUserモデルを作成してあります。基本的なcrudを実装する想定です

## 比較
### laravelと比較したrailsの特徴
・テーブルとクラスの関連付けによる命名ルールはLaravelと同じで、テーブル名の単数系
・リレーションメソッドの定義が簡潔

“`Post.rb
class Post < ApplicationRecord belongs_to :user end ``` リレーションメソッドは以下のように使えます パラメータで受け取ったidのpostインスタンスと投稿者名を返す関数になります ```posts_controller.rb def show @post = Post.find(params[:id]) # 以下のuser user_name = @post.user.name render json: { post: @post, user_name: user_name } end ``` ### railsと比較したLaravelの特徴 ・記述量は多くなりますが、userが

元記事を表示

コントローラの中のparamsのキーにフォームのどこのコードから送られるか

## 初めに

疑問に思ったことや上手くいかなかったことのアウトプットをしています。
自分なりの理解でアウトプットしていきます。初学者なので誤りもあると思います。
その際はご指摘いただけると幸いです。

## 疑問点

コントローラでparams[:example]がある時、ビューのフォームでは:exampleが見つからない。
どこから送られてるのでしょうか。

### 調べると
“`
<%= form_with model:@example, url:xxxxx do |f| %>
“`
のとこからだそうです。フォームの中で@exampleは:exampleとして扱われます。

元記事を表示

【Rails】bin/dev実行するとコンテナが落ちる

# はじめに
プログラミングスクールで学習中のものです。
webアプリ制作中に`bin/dev`コマンドを実行するとローカルホストに接続できなる事象が起き、解決できたため内容をまとめました。

# 動作環境

– **OS**: macOS
– **Rails**: 7.2.1
– **Ruby**: 3.2.3
– **Docker**: 25.0.3
– **Docker Compose**: 2.24.6

# 事象
CSSを追加したい時などに`bin/dev`コマンドを実行すると、`localhost:3000`にアクセスできなくなる。

dockerのログを見ると、webコンテナが強制終了されている(dbコンテナは無事)。

[![Image from Gyazo](https://i.gyazo.com/7f7dbfdad1e8b573299b165ad6f1734a.png)](https://gyazo.com/7f7dbfdad1e8b573299b165ad6f1734a)

# 原因
`bin/dev`が重複して実行されていたのが原因でした。

まず、`bin/d

元記事を表示

【Rails】お名前.comレンタルサーバー使用時、renderで独自ドメインを設定

## はじめに
Railsで実装したアプリをrenderでデプロイしました。
お名前.comで独自ドメインを取得し、お名前.comのレンタルサーバーを使用している場合の設定を行ったので備忘録に。

## 環境
* Ruby 3.2.4
* Rails 7
* Webアプリケーションサーバ render(デプロイ済み)
* PostgreSQL

* **お名前.comにて独自ドメイン取得済み**
* **お名前.comのレンタルサーバー(RSプラン)を使用**

## レンタルサーバーの使用について

お名前.comで独自ドメインを取得した場合は、DNSレコード設定から取得ドメインとrenderの紐付けを行います。

しかし、今回はレンタルサーバーを使用しているため、DNSレコード設定を行えません。

>お名前.comのサーバーサービスを利用している場合はDNSレコード設定と同時並行することはできません。

![スクリーンショット 2024-08-21 16.55.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw

元記事を表示

devise_token_authを用いたパスワードリセット機能の実装

### パスワードリセット機能の全体像の理解

https://qiita.com/fumi238000/items/048990b343661048f6f8

### 実装するコードの参考にした記事

https://zenn.dev/naok_1207/books/ba7243f1460b9e/viewer/4fbad2

### リクエスト失敗の対応
パスワードリセット画面でなぜかPUTリクエストが成功しないのでdevise_token_authのupdateアクションの中身を確認。
リクエストの送信にはaccess-token,client,uidをヘッダーに持たせる必要があることを確認。
加えて、この時点でreset_password_tokenをupdateアクションに渡せていなかったことにも気づいた。

https://github.com/lynndylanhurley/devise_token_auth/blob/master/app/controllers/devise_token_auth/passwords_controller.rb

### 最終的なフ

元記事を表示

【Rails7 とLaravel10】controllerを担うファイルの記述方法比較

## 前提
両者Postモデルを作成してあります。基本的なcrudを実装する想定です

## 比較
### laravelと比較したrailsの特徴

・ドット記法が使われる
・モデルのインポート文不要
・pythonに近い構文
・ormはlaravelと似ており、直感的
・ファイル名はスネークケース

“`posts_controller.rb
class Api::V1::PostsController < ApplicationController def index @posts = Post.all render json: @posts end def show @post = Post.find(params[:id]) render json: @post end def create @post = Post.new(post_params) if @post.save render json: @post else render json: @pos

元記事を表示

【個人開発】相談する側とされる側を繰り返す、循環型相談アプリ「めぐる宝石花」を開発しました【Rails】

## はじめに
はじめまして、kzkio([@kzkio_0114](https://x.com/kzkio_0114))と申します。

2023年10月からプログラミングスクール「RUNTEQ」に入学し、Ruby on Railsを中心に学習しています。今回は、循環型相談アプリ「[めぐる宝石花](https://www.xn--z8j3e5a2787akv3apqn.com)」をリリースしましたので、その紹介と技術的な工夫についてまとめます。

今回はQiitaで初めての記事投稿となります。至らない点もあるかもしれませんが、ぜひ温かく見守っていただけると嬉しいです。

## アプリ紹介

### **サービスURL**

https://www.xn--z8j3e5a2787akv3apqn.com

### **GitHub URL**

https://github.com/kzkio114/FlowerJewelRing

## サービス概要

このアプリは、相談する側と相談される側の役割を交互に繰り返すことで、相談が循環する仕組みを持った相談アプリです。ユーザー同

元記事を表示

【Rails初心者から中級者まで】scopeの基礎から完全解説

# はじめに

rails単体でのアプリケーションでは正直scopeというものは使わなかったですが、実務においてSPAだとかなり使う面があったので、今回記事にしました。

### scopeとは何か

https://railsguides.jp/active_record_querying.html#%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%97:~:text=strict_loading%3A%20true%0Aend-,15%20%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%97,-%E3%82%88%E3%81%8F%E4%BD%BF%E3%81%86%E3%82%AF

Rails ガイドさん より

> よく使うクエリをスコープに設定すると、関連オブジェクトやモデルへのメソッド呼び出しとして参照できるようになります。スコープでは、where、joins、includesなど、これまでに登場したメソッドをすべて使えます。どのスコープメソッドも、常にActiveRecord::Relationオブジェクトを返します。スコープの本体

元記事を表示

params[:id]とprivateで定義して取得するparamsの違い

## 初めに

疑問に思ったことや上手くいかなかったことのアウトプットをしています。
自分なりの理解でアウトプットしていきます。初学者なので誤りもあると思います。
その際はご指摘いただけると幸いです。

## 疑問に思った点
コントローラでparamsの記述するときはprivateで定義をして取得している時があります。
“`
private

def xxxxx_params
params.require(:user).permit(:email)
end
“`

なのに
“`
@token = params[:id]
“`
と記述するだけで取得できるコードもあります。違いはなんでしょう。

## 調べた結果
params[:id]とxxxxx_paramsでの違いはAPIで送られるデータかそうでないかです。
idはAPIリクエストの一部として送信されるので、pramas[:id]で取得できます。
モデルから取得する必要があるデータと、直接送られてくるデータで区別をしています。

## 修正・追記
privateでparamsを定義しなくてもparamsは使えま

元記事を表示

個人で路上ライブマッピングサイトを作りました

この記事を見てくださりありがとうございます。今回、路上ライブが開催される場所を地図上にマッピングして集客できるようなWebアプリケーションを作ってみました。以下のリンクから
https://livespot.onrender.com/

![スクリーンショット 2024-09-06 18.55.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3768119/56e31ffb-d42a-a082-5ad0-b2883a8f5ae8.png)

# 1. Webアプリの目的
大学で音楽活動をしていて、何かインディーズ界隈に貢献できるサービスを開発できないかと考えていたときに「路上ライブ」に目をつけました。私が考える路上ライブの課題及び改善点として、「集客のしにくさ」が第一に挙げられます。この課題を解決する手段として、POKEMON GOのようなマッピングサービスが有効だと考えました。作ったアプリ(Livespot)ではアーティストはユーザー登録を行えばアプリ内でアーティストアカウントをもち、ライブを行

元記事を表示

RubyでprivateメソッドをRspec等で呼び出す方法

# 結論 sendメソッドを使おう!

“`
class User
def greet(name)
“Hello, #{name}!”
end

private

def secret_method
“This is a secret!”
end
end

user = User.new
puts user.send(:greet, “Alice”) # => “Hello, Alice!”
puts user.send(:secret_method) # => “This is a secret!”
“`

元記事を表示

Rubyの配列とか、ハッシュとか、、、

## 始めに・・・
先日後輩のコードレビューをしていた際に「ハッシュがさぁ!ハッシュがさぁ!」と先輩ぶっていたが単純に配列だったという悲しいことを晒したので懺悔の意味も込めて、、、

## 配列とは、、、
配列とは複数のデータを纏めて格納できるオブジェクト
“`ruby
#空の配列
[]
#サンプル
[‘配列1′,’配列2′,’配列3’]
#クラスはArray
[].class #=> Array

#サンプル
irb(main):003> a = [‘配列1′,’配列2′,’配列3’]
=> [“配列1”, “配列2”, “配列3”]
irb(main):004> a[0]
=> “配列1”
“`

主にRailsだとeachで使う気がする
“`Ruby
numbers = [1,2,3,4,5]
irb(main):009> sum = 0
=> 0
irb(main):010* numbers.each do |n|
irb(main):011* sum += n
irb(main):012> end
=> [1, 2, 3, 4, 5]
irb(main):013>

元記事を表示

【Rails7 とLaravel10】routerを担うファイルの記述方法比較

## 前提
両者Postモデル、Postコントローラーを作成してあります。基本的なcrudを実装する想定です

## router

routerという表現が正しいか微妙ですが,ルーティングのことです。Railsでは`routes.rb`,Laravelでは`api.php`(`web.php`)が該当します。

`routes.rb`
“`routes.rb
Rails.application.routes.draw do
namespace :api do
namespace :v1 do
resources :posts, only: [:index,:show,:create,:update,:destroy]
end
end
end
“`

`api.php`
“`api.php
use Illuminate\Support\Facades\Route;

Route::prefix(‘api/v1’)->group(function () {
Route::get(‘posts’, [

元記事を表示

文字列をTrue or Falseに変換する

#### 環境

Ruby2.6
Rails4.0

#### Booleanの判断の仕方

RubyにはBooleanClassというは存在していません。その代わり、FalseClass、TrueClassというのが存在します。なぜ、そのような設計をしたのだろうか。他言語から移行した人からしてみれば訝しく思うのも無理はない。

Boolean型つまり、FalseClassかTrueClassかの判断は、このようなやり方で判断することになります。

“`sample.rb
if params.is_a?(FalseClass) or params.is_a?(TrueClass)
puts “いわゆるBoolean型です”
else
puts “いわゆるBoolean型ではありません”
end
“`

#### テスト結果

“`test.rb
params = true # いわゆるBoolean型です
params = True # エラーになります
params = TRUE # エラーにはならないがwarningになる(

元記事を表示

Railsでunknown Statement of type “ForOfStatement” のエラーが起きたときの解消法

## サマリ

### 何が起こったか
`axios`導入後、コンパイルエラーが発生しました。
具体的なメッセージは以下のとおりです.

“`
Failed to compile.
./node_modules/axios/lib/helpers/trackStream.js
Module build failed (from ./node_modules/babel-loader/lib/index.js):
Error: /home/omi/blog-app/node_modules/axios/lib/helpers/trackStream.js: unknown Statement of type “ForOfStatement”
“`

### 何をして解消したか
プロジェクトルートディレクトリ直下の`.browserslistrc`ファイルに`IE 11`と記述しました。

“`
// .browserslistrc

defaults
IE 11
“`

## 詳細
### 開発環境
– Rails: 6.0.6.1
– Node.js: 14.16
– webp

元記事を表示

Gitでマジでしたらあかんこと

今回は、Git/Githubでマジでしたら終わることについて紹介したいと思います。(実務で自分が怒られたこと中心)
初心者向けの備忘録なので、初めたてじゃないよって人は読まなくていいかもです。

# master/mainブランチのまま変更する or masterにpushする
これまじやばいです。自分の変更がmasterと同期するってことなので、conflict発生したら詰みます。
あと破壊的な変更を戻せなくなります。
“`
git push origin master
“`
これだけは禁止!!!!!!!!!!!!!!!(一回やった)

# リモートの変更を反映しないままbranchを切る
“`
git pull origin master
git branch -c ブランチ名
“`
これらは二つでセットであることは覚えておきましょう

# メイン以外からブランチを切る
例えば、
“`
git branch -c feature/newbranch
“`
でブランチをメインから切り、変更してコミットしたのちに、別のissueに取り組みたくなって(or自分のプロジェクトな

元記事を表示

Railway CLIでRails開発中にDatabase ‘railway’ does not exist

# はじめに
Herokuまわりのゴタゴタがあって、個人開発はRailwayを使うようになったのですが、ちょっと困ったことがあり、自分用メモとして残しておきます

# db:migrate:resetができない?
開発の初期って、DBの設計が決まっていなくて、実装していくうちに、あ、あれ足りなかったな。
ということは多いでしょう。

そんなとき、結構気軽にマイグレーションを一からやり直すコマンド

“`
rake db:migrate:reset
“`

をしたらいいか!くらいのノリで個人開発をやっているのですが、ちょっと問題が発生しました。

“`
% railway run rake db:migrate:reset
Database ‘railway’ does not exist
We could not find your database: postgres. Which can be found in the database configuration file located at config/database.yml.

To resolve this i

元記事を表示

長距離ドライブをサポートするアプリを作成しました

## はじめに
こんにちは!
[ジョニー](https://x.com/johnny1_ryo) と申します。
未経験からエンジニア転職を目指して、日々学習をしています。

この度、[kodora-co-driver](https://www.kodora-co-driver.com/) を開発しました。

## サービス名 : kodora-co-driver
Image from Gyazo

▼ サービスURL

https://www.kodora-co-driver.com/

▼ Githubリポジトリ

https://github.com/johnny23ryo/kodora-Co-Driver-

## アプリ名の由来

アプリ名「kodora-co-driver

元記事を表示

Rails ネストした配列のJSONに対してStrong Parameterを適用する

Rails: Applying Strong Parameters to Nested Array JSON

フロントエンドで整形したJSONをRailsのエンドポイントで受け取る際に、Strong Parameterの設定で少しハマったので備忘録として記載

環境は以下
* Ruby 3.1
* Rails 6系

# Strong Parameterの中で配列を扱う(文字列の配列)

参考)https://blog.ryskit.com/entry/2024/01/13/020409

“`json:requestのJSONの構造
{
“user”: {
“stringArray”: [
“aaa”,
“bbb”
]
}
}
“`

この構造に対してStrong Parameterを適用する場合、以下のように記述する。
配列であることを明示するだけで良い。

“`ruby:動作するStrong Parameter
params.require(:user).permit(stringArray: [])
“`

#

元記事を表示

OTHERカテゴリの最新記事