- 0.1. sql_mode=only_full_group_byとは?
- 0.2. 【Rails・slim】link_toについて
- 0.3. 「RailsでさくっとWebsocketする」を実践してつまずいたとこまとめてみた
- 0.4. オリジナルアプリ(ウォンツ)の制作過程〜テーブル設計〜
- 0.5. 【Rails】【Ruby】Fileクラスのwriteメソッドとbinwriteメソッドについて
- 0.6. Rails環境構築エラーメモ
- 0.7. RSpecテストにおける build と create の使い分け
- 0.8. Railsチュートリアル 第4章 復習用
- 0.9. Ruby gem 開発!中国語(簡体字・繁体字)と日本語を判別するgemを作ってみた(前編)
- 0.10. 【Tips】Railsのバージョンアップ時にload_defaultsを更新し忘れる問題に気付きやすくする
- 0.11. Rails 7 にBootstrapを導入
- 0.12. Index name ‘Index name’ on table ‘Table name’ already existsって言われたとき
- 0.13. オリジナルアプリ(ウォンツ)の制作過程〜要件定義〜
- 0.14. view/devise/passwords/edit.html.erbとview/users/edit.html.erbの違い
- 1. Change your password
sql_mode=only_full_group_byとは?
# Mysql2::Error: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ’sample_test.parent.id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by (ActiveRecord::StatementInvalid)
>Mysql2::Error: SELECT リストの式 #1 が GROUP BY 節になく、GROUP BY 節の列に機能的に依存しない非集約列 ‘sample_test.parent.id’ を含んでいます。
これは sql_mode=only_full_group_by (ActiveRecord::StatementInvalid) と互換性がありません。出典 deepl
## 自分の訳
SELECTの表現
【Rails・slim】link_toについて
# 概要
link_toがわからない人に届いて欲しい ※slim記述
[ドキュメント](https://railsdoc.com/page/link_to)に大体書いてあります。# link_toとは
`ハイパーリンク(hyperlink)`[^1]を生成するへルパーメソッド
RailsではHTMLのaタグを生成してくれる[^1]:**ハイパーリンク(hyperlink)**
・文書データに埋め込まれている他ページの参照情報**ハイパーテキスト(hypertext)**
・ハイパーリンクの情報を参照して別のページに移動する仕組み上記2つを合わせてWEBページに関係性をもたせる。
HTMLは『**HyperText Markup Language(ハイパーテキスト・マークアップ・ランゲージ)**』の略
# 使い方
以下のように記載します
~~~html
<%= link_to "表示名", "URL or パス" %>
~~~
・slimの場合
~~~slim
= link_to “表示名
「RailsでさくっとWebsocketする」を実践してつまずいたとこまとめてみた
# 経緯
[Rails7でさくっとWebSocketする](https://zenn.dev/seita1996/articles/rails7-actioncable#controller%E3%81%A8view%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B)を実践している中で躓いたところがいくつかあったので、まとめてみました。
# localhostアクセスできない問題
– 原因
データベースに接続できていなかった
– 解決法
接続する前にコンテナに入り(`docker-compose run app sh`)、以下を実行することでアクセスできるようになった
“`sh
rails db:migrate
“`
# チャットがリアルタイムで更新されない。
– 原因
broadcastメソッドの引数指定がおかしかった。
“`Ruby
# 間違い
ActionCable.server.broadcast ‘room_channel’, message: render_message(message)
# 正解
ActionCable.se
オリジナルアプリ(ウォンツ)の制作過程〜テーブル設計〜
## はじめに
こんにちは、今日もオリジナルアプリの制作過程を記録していきます。今日は要件定義についてです!
このシリーズの記事では、企画・要件定義から設計、実装、テストまでの全てのプロセスを詳細に説明します。毎日少しずつ進めていきますので、アドバイスや指摘があればぜひ教えてください。今日はテーブルを設計して見ました。
# テーブル設計
## users テーブル
| Column | Type | Options |
| —————— | —— | —————————— |
| name | string | null: false |
| email | string | null: false, unique: true |
| password_confirmation| string | null: false
【Rails】【Ruby】Fileクラスのwriteメソッドとbinwriteメソッドについて
Rails初学者のアウトプット兼備忘録です。
間違いや補足等あればご指摘いただけると幸いです。今回はFileクラスのwriteメソッドとbinwriteメソッドについてまとめます。
# そもそもFileクラスとは?
Rubyでファイルを扱うには、Fileクラスを使う必要があります。
Fileクラスに対してメソッドを指定することで、ファイルの作成や書き込み等行うことができます。
Fileクラスにも様々なメソッドがありますが、今回はwriteメソッドとbinwriteメソッドに限定して違いなどをまとめます。# writeメソッドとbinwriteメソッドの違い
まず、writeメソッド、binwriteメソッド共にファイルにデータを書き込むメソッドです。
違いとしては、文字列を書き込むか、バイナリーデータ(画像や音声などの非テキストデータ)を書き込むかというところです。**writeメソッド-ファイルに文字列を書き込むのに適している
binwriteメソッド-ファイルにバイナリーデータを書き込むのに適している**# 使い方
“`controller.rb
File.
Rails環境構築エラーメモ
# 環境
– Windows 11 (WSL2)
– シェル:Bash# やりたいこと
大学の教育プログラムでRuby on Railsをいじることになった。
エラーが出たので解決法のメモ“`bash
rails new
“`# エラー内容
エラー内容
“`
$ rails new pdiary –skip-git
Based on the specified options, the following options will also be activated:–skip-decrypted-diffs [due to –skip-git]
create
create README.md
create Rakefile
create .ruby-version
create config.ru
create Gemfile
create app
cre
RSpecテストにおける build と create の使い分け
# はじめに
RSpecでテストを書く際、FactoryBotを使用してテストデータを生成することが一般的です。その際、`build` と `create` という2つのメソッドがよく使われますが、これらの使い分けは重要です。本記事では、これらのメソッドの違いと適切な使用場面について解説します。# `build` と `create` の基本的な違い
## build– メモリ上にオブジェクトを作成するが、データベースには保存しない
– 処理が高速
– データベースに影響を与えない## create
– オブジェクトを作成し、データベースに保存する
– `build` より処理が遅い
– データベースに実際にレコードが作成される## 使い分けの指針
### buildを使用する場合
1. モデルの単純なバリデーションをテストする場合
2. データベースへの保存が不要なテストの場合
3. テストの実行速度を重視する場合例:
“`ruby
RSpec.describe User, type: :model do
let(:user) { build(:use
Railsチュートリアル 第4章 復習用
Railsチュートリアルで私が一番苦手な分野である第4章をアウトプットのために記述していく
最近プログラミング始めたビギナーなので間違いがあったら先輩方に訂正していただきたい
この記事をかなり参考にした
https://qiita.com/take_webengineer/items/265f29b77f3126d3a9df単純なオブジェクト指向(?)のはなし
・クラスの下にインスタンスがある(Stringクラスの中に”foobar”という文字列がある)
・詳しくはこちらのサイトが解説している(スマホの例がわかりやすい) https://type.jp/et/feature/25261/
・メソッドとは、オブジェクトに渡されるメッセージ( “foobar”.length のlengthがメソッド)
・Rubyはメソッドの引数のカッコ()を省略して記述できる。
・ハッシュがメソッド呼び出しの最後の引数である場合は、波カッコを省略できる
“`Ruby
# メソッド呼び出しの丸カッコは省略可能。
stylesheet_link_tag(“application”, “data
Ruby gem 開発!中国語(簡体字・繁体字)と日本語を判別するgemを作ってみた(前編)
# Ruby gem 開発!中国語と日本語を判別する gem を作ってみた(前編)
こんにちは、私の名前は九兵衛です。
今回、真面目に Ruby gem を開発することになり、その過程で学んだことを皆さんと共有したいと思います。
私が作ろうとしているのは、[Unihan Database](https://unicode.org/charts/unihan.html) で公開されている `Unihan_Variants.txt` に基づいて中国語(簡体字・繁体字)と日本語を判別する gem です。## gem って何?なぜ作るの?
最初に、「gem」って何なのか、ぶっちゃけよくわかっていなかったんです 😅
調べてみると、gem は Ruby のライブラリやアプリケーションをパッケージ化したものだと分かりました(それはそう)
つまり、自分で作った便利な機能を、他の人も簡単に使えるようにするためのもの私がこの gem を作ろうと思ったのは、多言語対応をするのに日本語と中国語を判別する必要があったからです。
既存の gem を探してみたんですが、ピッタリなものが見つからず…
【Tips】Railsのバージョンアップ時にload_defaultsを更新し忘れる問題に気付きやすくする
## 解決したい問題
既存のRailsアプリケーションをバージョンアップする場合、`config/application.rb`で`config.load_defaults`も(どこかのタイミングで)更新する必要があります。“`diff_ruby:config/application.rb
class Application < Rails::Application # Rails 7.0から7.1にバージョンアップする - config.load_defaults 7.0 + config.load_defaults 7.1 ``` しかし、この設定をうっかり更新し忘れて「よし、Rails 7.1にアップデートできたぞ!🙌」と喜んでいたら、実は`load_defaults`が7.0のままだった😱という問題が起こる可能性があります。 というか、僕は先日やらかしました、はい😂 (再度Rails 7.1向けのプログラム修正と動作確認を余儀なくされました……) ## 改善策 この問題に気付きやすくするように、`config/application.rb
Rails 7 にBootstrapを導入
## はじめに
Railsでアプリ作成時にBootstrapを導入することで、高速でレスポンシブなアプリを作成できるようになります。Gemを使った導入の仕方を以下にまとめます。## 開発環境
– Rails 7.0.8.4ruby
– Ruby 3.2.0
– Bootstrap 5.3.3## 手順
### 1. Gemを導入する
Gemfileに以下2つのGemを追加します。
“` Ruby:Gemfile
gem ‘bootstrap’, ‘~> 5.3.3’
gem ‘jquery-rails’
“`
またGemfile に以下のGemがコメントアウトされているので、コメントアウトをなくしてください。
“`ruby:gemfile
gem “sassc-rails”
“`
[![Image from Gyazo](https://i.gyazo.com/b8b317e13ac5d7d39bc1badf0b6bb5d6.gif)](https://gyazo.com/b8b317e13ac5d7d39bc1badf0b6bb5d6)
この作業を飛ばすと下のエラー
Index name ‘Index name’ on table ‘Table name’ already existsって言われたとき
# はじめに
以下のマイグレーションエラーがよく起きてたけど、
対処法は毎度同じだったので手順を残す## Index name {Index name} on table {Table name} already exists
`rails db:migrate`または`rails db:migrate:up VERSION={バージョン}`したときに、
上記のエラーメッセージで怒られる## やったこと
テーブルまたはインデックスが本当にあるのか確認
“`cmd
$ docker compose exec db bash
$ mysql -u root -p
# パスワード入力# 本当にテーブルがあるのか → あった
show columns from {Table name};# そのテーブルに当該Indexはあるのか → あった
show index from {Table name};
“`作成しようとしている所に作成しているあるから怒られると思う
ならば消してみる
“`cmd
# インデックスがあれば消す
alter table {Table nam
オリジナルアプリ(ウォンツ)の制作過程〜要件定義〜
## はじめに
こんにちは、今日もオリジナルアプリの制作過程を記録していきます。今日は要件定義についてです!
このシリーズの記事では、企画・要件定義から設計、実装、テストまでの全てのプロセスを詳細に説明します。毎日少しずつ進めていきますので、アドバイスや指摘があればぜひ教えてください。## 要件定義
### 機能要件
#### ユーザー管理
– **ユーザー登録**: 名前、メールアドレス、パスワード、住所を入力して新規登録。
– **ログイン/ログアウト**: 登録済みユーザーがメールアドレスとパスワードでログイン。
– **ユーザープロフィール管理**: 名前、住所、メールアドレス、電話番号の変更機能。#### 依頼管理
– **依頼内容**: タイトル、説明、カテゴリー、条件価格、画像をアップロードし、依頼の投稿。
– **依頼一覧表示**: 全依頼の一覧を表示、カテゴリーや価格帯でフィルタリング可能。
– **依頼条件詳細表示**: 依頼の条件の詳細情報(タイトル、説明、上限・下限価格、依頼者情報、着払い可否)を表示。
– **依頼検索**: 依頼している商品タイ
view/devise/passwords/edit.html.erbとview/users/edit.html.erbの違い
# ①app/view/devise/passwords/edit.html.erb
## 目的
このファイルは、パスワードをリセットするためのビューを提供するためのもの。
ユーザーが「パスワードを忘れた」場合に、メールで送信されたリンクを使って新しいパスワードを設定するためのフォームとなる。## 主な機能
・パスワードリセットトークンの入力
・新しいパスワードの入力
・パスワードの確認
・フォームの例## 実装例
“`ruby:app/view/devise/passwords/edit.html.erbChange your password
<%= form_with(model: resource, url: password_path(resource_name), method: :put, local: true) do |f| %>
<%= devise_error_messages! %><%= f.label :password, "New password" %>【Rails】個人的によく使うコマンドまとめ
Rails初学者の学習内容の備忘録です。
間違いや補足等あればご指摘いただけると幸いです。今回は個人的によく使う基本的なコマンドをまとめます。
# コマンド一覧
**ディレクトリに新しいRailsアプリケーションを作成する**
“`
rails new アプリケーション名
“`
**モデルの生成**
“`
rails g(generate) model モデル名 カラム名:データ型
“`
**モデルの削除**
“`
rails d(destroy) model モデル名 カラム名:データ型
“`
**コントローラ生成**
“`
rails g(generate) controller コントローラ名 アクション名
“`
**コントローラ削除**
“`
rails d(destroy) controller コントローラ名 アクション名
“`
**サーバー起動**
“`
rails s(server)
“`
**コンソール起動**
“`
rails console
“`
**ルートを確認する**
“`
rails routes
“`
**カラムを追find_each と find_in_batches と in_batches の違い
## find_each
[Railsドキュメント](https://railsdoc.com/page/find_each)
[github](https://github.com/rails/rails/blob/984c3ef2775781d47efa9f541ce570daa2434a80/activerecord/lib/active_record/relation/batches.rb#L68)### 説明
分割してレコードを取得して1件ずつ処理
デフォルトでは1000件ずつ処理 大きなデータをもつモデルなどを処理する時に使う
内部的には、find_in_batchesを使っており、戻り値の配列に対してeachを実行することで1レコードずつ返している
そのため、使い方はeachと全く同じ### ソースコード
“`rb
def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block)
if block_give【Factory bot】Rspecでのテストコード作成をもっと楽に!
# はじめに
こんにちは、エンジニア3年目の嶋田です。
この記事を開いていただきありがとうございます!私がエンジニアとして働き始めてから、テストの重要性を痛感しています。
特にRspecを使用したテストは、コードの品質を保つために欠かせません。
そして、テストデータの生成にはFactory Botが非常に役立ちます。今回は、Rspecで使用するFactory Botの基本的な使い方や便利な機能についてまとめてみました。
この記事が皆さんのテストコードの質を向上させる一助となれば幸いです。より詳しく知りたい方は、以下のページを参照して下さい。
(※この記事の内容の大半は、以下のページに書かれている内容です)
[Factory Bot Getting Started](https://github.com/thoughtbot/factory_bot/blob/master/GETTING_STARTED.md)# 目次
– [Factory Botとは](#Factory-Botとは)
– [Factoryの定義](#Factoryの定義)
–オリジナルアプリ(ウォンツ)の制作過程
こんにちは!この記事では、未経験からエンジニアを目指す初学者の私が、オリジナルアプリの制作過程を記録していきます。使用する言語はRubyとRailsです。これから(ほぼ)毎日の進捗や学びを投稿していきますので、アドバイスや指摘があればぜひ教えてください。
## 企画の練り方
まずは、アプリの企画を練ることから始めます。どんなアプリを作りたいのか、誰のためのアプリなのかを明確にすることが重要です。今日は具体的なユーザーペルソナを作成しました。
## 今日の進捗:ペルソナの作成
### ペルソナ: 田中 和也 (Kazuyuki Tanaka)
| 項目 | 詳細 |
|———————-|———————————————————————-|
| **一般情報** |初学者のためのRailsの豆知識
# Railsのあまり知られていない豆知識
Railsは初心者にも使いやすいフレームワークですが、少し掘り下げると便利な機能がたくさんあります。今回は、Railsのあまり知られていない豆知識をいくつか紹介します。これらの機能を使うことで、より効率的に開発が進むでしょう。
## 1. `find_by`メソッド
`find_by`メソッドを使うと、特定の条件に一致する最初のレコードを簡単に取得できます。
“`ruby
# IDが1のユーザーを取得
user = User.find_by(id: 1)# emailが特定の値のユーザーを取得
user = User.find_by(email: “example@example.com”)
“``find_by`メソッドは見つからない場合に`nil`を返すので、例外が発生することなく安全に使えます。
## 2. `update`メソッド
`update`メソッドを使うと、一度に複数の属性を更新できます。
“`ruby
user = User.find_by(id: 1)
if user.update(name:RSpecで日付の値が有効ではないとHTMLから警告されて詰まる(一応は解決)
# 結論
https://aaronsaray.com/2015/error-validating-seconds-in-html5-time-input/
– HTML5では`input`要素の入力値に対してのバリデーションが働くため
– ‘email’など高頻度で使われるであろう形式にも機能## 【編集時】
– Railsのフォームヘルパー `form.datetime_field` で生成されるのは ``
– `YYYY-MM-DDThh:mm` という書式で値を扱っている点に注意
– その関係で”文字列”であれば問題なくテストできた“`ruby:”編集”の場合
# OKパターン
fill_in ‘Deadline’, with: ‘2001-02-03T04:50’
fill_in ‘Deadline’, with: Time.new(2001, 2, 3, 4, 50).strftime(“%m%d%Y\t%I%M%P”)# ERRORパターン
fill_in ‘Deadline’,関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた