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

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

number_field_tag に設定オプション「step」を使って小数点を設定する

# 概要
number_field_tag に、小数点を入力できない!とお思いの方に有用です。

# 対象
– number_field_tag に小数点入力ができる設定方法を探している
– stepの書き方 早見表を見たい方
– step: 1
– step: 0.1
– step: 0.01
– step: 0.001

## 基本形

“`shell:型
number_field_tag(要素名, value値=nil, オプション={})
“`

が number_field_tag の型です。

“`ruby: step
number_field_tag ‘price’, nil, step: 1
“`

## 早見表
### step: 1 を設定
“`ruby: step
number_field_tag ‘price’, nil, step: 1
“`
**満たさない場合の結果**
![number_field_tag_1.png](https://qiita-image-store.s3.ap-northeast-1.a

元記事を表示

電気圧力鍋レシピ投稿サイトを作成した話 (TypeScript/ React / Ruby on Rails / AWS / Docker)

# PressurePot Recipes
電気圧力鍋を使ったレシピを投稿することができるアプリケーションを作成しました。

サイトURL:~~https://web.pp-recipes.com~~
公開停止しました。(2024.2.15)
GitHub:https://github.com/skysky0208/cooker_recipe_app

ゲストアカウント
メールアドレス:test@test.com
パスワード:password

## 1. 背景

このアプリケーションを作ろうとしたきっかけは、自身が電気圧力鍋にはまっており、レシピを探そうとした時にふと感じた課題を解決したいと感じたためです。
その時に感じた課題が以下になっています。

– 普通のレシピと圧力鍋のレシピが混じっていて探しにくい
– 普通のレシピを検索する際と見る視点が異なる
– 圧力鍋のレシピを探すときは、圧力鍋に材料を入れるまでの調理とボタンを押した後の加圧にプロセスが分かれる
– 電気圧力鍋の強みとして、この前半の調理のみでほぼ料理が完了する
– そのため、鍋

元記事を表示

【Rails】session[:user_id]とは

# session[:user_id]とは
`session[:user_id]`は、セッションにユーザーIDを格納するための方法です。セッションは、Webアプリケーションでユーザーの状態を維持するための仕組みであり、クライアントとサーバーの間で情報を保存するために使用されます。

具体的には、`session[:user_id]`は、ユーザーがログインしたときにセッションにユーザーIDを保存し、ログアウトするまでそのユーザーが認証されていることを示します。これにより、ユーザーのログイン状態を保持し、適切なユーザーに関連付けられたデータや機能にアクセスできるようになります。

# 使用方法
例えば、以下のようにしてユーザーIDをセッションに保存することができます:
“`rb
session[:user_id] = @user.id
“`
そして、以下のようにしてセッションからユーザーIDを取得することができます:
“`rb
user_id = session[:user_id]
“`
セッションは一般的に、クッキーなどのメカニズムを使用してクライアントのブラウザに保存されます。

元記事を表示

未経験エンジニアがハッカソンに出場した理由

# 概要
RUNTEQというプログラミングスクールで知り合った方とチームを結成してハッカソンに参加してきました!!

メンバー紹介

参加者 2名
・chihiro
私は今も大手カレーチェーンで生活費を稼ぎながらエンジニアになる夢を叶えるために学習を続ける未経験エンジニアです。

・若きエリートエンジニアくん 
スクールの同期中で一番最初にエンジニアになったスーパーエリートくんです。(ほんと尊敬)

以上、2人で出場しました。本当はもう一人出場する予定でしたが当日高熱を出してしまいました。とほほ…
人間体調が一番大切!まあ、こんなトラブルがありながら気合いで乗り越えました。

# qiitaハッカソンとは
今回私たちが出場したのはQiitaが主催している今年初めて開催された大会です。
ハッカソンという言葉はハック(hack)とマラソン(marathon)を合わせた混成語のことです。
題材は当日発表、1.5日でプログラミング言語を用いた作品を作成、プレゼンテーションを行い審査、決勝出場者が決まります。

# サービス概要
「Rails bridge」
Railsに

元記事を表示

railsでGeminiを使って遊んでみた忘備録

節分に出てくる鬼。
鬼と言えば、鬼のパンツ。
鬼のパンツといえば、鬼のパンツはいいパンツ。

だがいいパンツとは誰が判定しているのか。
AIに判定してもらいましょう〜

ということで、APIを使って遊んでみたいなと、ちょっと時期過ぎてる気はしますが節分と絡めてGeminiPro使ってみました。

GeminiProを選んだ理由は無料でアクセスでき、1分あたり最大60クエリが利用可能とのことだったので、無料のうちにやってみました。2024年初頭までは無料とのことでしたが、参考にする際には公式で確認してください。

基本的には公式に書いてあるこテキストと画像入力の箇所を参考にしました。
https://ai.google.dev/tutorials/rest_quickstart

早速実装していきますが、conrtollerやmodelの細かいところはすっ飛ばします。
というのもPhoto DBにはimageとgemini_textの2個のカラムのみなので。

“`ruby
# controller

def create
@photo = Photo.new(p

元記事を表示

【Rails】インスタンスメソッドの定義

# インスタンスメソッドの定義
Railsにおけるインスタンスメソッドの定義は、Active Recordモデルやコントローラーなどのクラス内で行われます。これらのクラスはRubyのクラスであり、インスタンスメソッドを定義することができます。

例えば、Active Recordモデル内でインスタンスメソッドを定義する方法を示します:
“`rb
class User < ApplicationRecord def full_name "#{first_name} #{last_name}" end end ``` この例では、`User`モデル内で`full_name`というインスタンスメソッドが定義されています。このメソッドは、`first_name`と`last_name`属性を組み合わせてユーザーのフルネームを返します。 コントローラー内でのインスタンスメソッドの定義も同様です: ```rb class UsersController < ApplicationController def show @user = User.find(params

元記事を表示

RailsプロジェクトをDocker化する手順(Rails, postgresql)

## はじめに
既存のRailsプロジェクトをdocker化する機会があったため、手順を記載していく。

## docker化の概要
– 既存のRailsプロジェクト
– Ruby 3.0.2
– Rails 6.0.3
– postgresql 12
– 環境
– Windows 11 Home (wsl2/Ubuntu)

## 手順
### 事前準備
– 既存のRailsプロジェクトをclone
– Dockerfile, docker-compose.ymlをプロジェクト内に新規作成

### Dockerfile作成
イメージのビルド手順を記載する。

“`dockerfile:Dockerfile
FROM node:14.17.6 as node
# ベースイメージ
FROM ruby:3.0.2

# Install Node.js and Yarn
COPY –from=node /opt/yarn-* /opt/yarn
COPY –from=node /usr/local/bin/node /usr/local/bin/

元記事を表示

【Rails】flash.nowとは

# flash.nowとは
`flash.now`は、Railsのコントローラーでフラッシュメッセージを表示する際に使用されるオブジェクトです。通常の`flash`とは異なり、`flash.now`で設定されたメッセージは次のリクエストでは保持されません。

通常の`flash`メッセージは、リクエストの終了時にセッションに保存され、次のリクエストで表示されます。しかし、`flash.now`メッセージは、現在のリクエストにのみ適用されます。つまり、レンダリングするビューに対して直接メッセージを表示したい場合に使用されます。

# 使用方法
例えば、次のように使用します:
“`rb
# コントローラー内のアクション
def create
@user = User.new(user_params)
if @user.save
flash[:success] = “User created successfully!” # このメッセージは次のリクエストで表示される
redirect_to @user
else
flash.now[:error] =

元記事を表示

【Rails】form_tagとは

# form_tagとは
`form_tag`は、Railsでフォームを作成するためのヘルパーメソッドの1つです。このヘルパーメソッドを使用すると、HTMLの`

`タグを簡単に生成できます。

form_tagを使用すると、次のようなことができます:

1\. フォームのアクションやメソッドを指定する。
2\. フォームに含まれる入力フィールドやボタンなどの要素を含める。

以下は、form_tagの基本的な使用例です:
“`erb
<%= form_tag('/search', method: 'get') do %>
<%= text_field_tag(:query) %>
<%= submit_tag('Search') %>
<% end %>
“`
この例では、`form_tag`は`/search`に対するGETリクエストを行うフォームを生成します。フォームには1つのテキストフィールド(クエリ)と1つの送信ボタンが含まれています。

`form_tag`を使用すると、Railsで簡単にフォームを作成し、サーバーにデータを送信することができます。

元記事を表示

【Rails】Assets: precompileとは

# Assets: precompileとは
`assets:precompile`は、Railsアプリケーションのアセット(JavaScript、CSS、画像など)を事前にコンパイルするためのコマンドです。これにより、本番環境でのパフォーマンスを向上させるために、アセットを最適化してバンドルすることができます。

具体的には、`assets:precompile`コマンドは、アプリケーションのアセットをコンパイルし、`public/assets`ディレクトリにプリコンパイルされたファイルを生成します。これにより、アプリケーションが本番環境で実行される際に、アセットの読み込みが高速化されます。

`assets:precompile`コマンドは、アプリケーションを本番環境でデプロイする前に実行する必要があります。通常は、次のようにして実行されます:
“`
$ rails assets:precompile
“`
このコマンドを実行すると、アプリケーションのアセットが事前にコンパイルされ、本番環境での高速な読み込みが可能になります。

元記事を表示

【Rails】コンソールでレコード追加する方法

# レコードの追加方法
Railsのコンソールでレコードを追加するには、Railsのコンソール(rails console)を起動し、Active Recordモデルを使用して新しいレコードを作成します。以下は一般的な手順です:

### 手順
1\. ターミナルでRailsのプロジェクトディレクトリに移動します。
2\. rails consoleと入力してRailsのコンソールを起動します。
3\. レコードを追加したいモデルを選択します。例えば、Userモデルの場合は以下のようにします:
“`rb
user = User.new
“`

1\. レコードの属性を設定します。例えば、`name`や`email`などの属性がある場合は以下のようにします:
“`rb
user.name = “John Doe”
user.email = “john@example.com”
“`

2\. `save`メソッドを呼び出して新しいレコードをデータベースに保存します。
“`rb
user.save
“`
これで新しいレコードがデータベースに追加されます。すでに存在する属性を一度

元記事を表示

【Rails】単数リソースとは

# 単数リソースとは
単数リソース(singular resource)とは、RESTfulなルーティングにおいてリソースを表現する際に、特定のリソースに対してCRUD操作(作成、読み取り、更新、削除)を行うためのルーティングを定義する方法の1つです。

通常、リソースは複数形で表現されます(例:`resources :articles`)。これは、記事(`articles`)に対する複数の操作を可能にします。一方、単数リソースは特定のリソースに対して単一の操作を提供します。

例えば、`resource :profile`というルーティングは、ユーザーのプロフィール情報に対してCRUD操作を行います。この場合、次のようなルーティングが生成されます:

– GET /profile: プロフィールの表示
– GET /profile/edit: プロフィールの編集フォーム表示
– PUT /profile: プロフィールの更新
– DELETE /profile: プロフィールの削除

単数リソースは、ユーザーごとに1つのリソースを想定しており、通常はIDを使用しないため、リソースの識

元記事を表示

【備忘録】モデルにバリデーションを追加後、seed実行時のエラー

## 背景
モデルにバリデーションを追加後、`rails db:seed`を実行した時のエラーと解決策について備忘録がてら投稿します。

ユーザーからフォームの値を受け取った時、名前と画像を必須項目にしたかったため、Itemモデルに以下のバリデーションを追加しました。
“` ruby:item.rb
validates :name, :image, presence: true
“`
その後`rails db:seed`を実行すると…
“`
ActiveRecord::RecordInvalid: バリデーションに失敗しました: 画像を入力してください (ActiveRecord::RecordInvalid)
“`
今までは問題なく動作していたseed実行時にエラーが発生しました。

## 原因
原因はseedのバリデーションが実行されるタイミングです。
エラーが起きた時のseedファイルのコードは以下です。(一部抜粋)
“`ruby:seed.rb
item = Item.create!(name: ‘name’)
item.image.attach(***)
`

元記事を表示

【個人開発】自己受容をテーマにしたサービス「JustBe U」をリリースしました

# はじめに
こんにちは、yoshiと申します。
このたび、自己受容をテーマにしたWebサービス「JustBe U」をリリースいたしました。🌱
初めての個人開発だったため、エラーやわからないことでつまずくこともありましたが試行錯誤して完成させることができました。今回は、実装でこだわった部分や工夫した部分をお伝えできればと思いますので、技術的な部分で誤りがありましたらコメント等いただけますと幸いです。

# サービス名: JustBe U
[![Image from Gyazo](https://i.gyazo.com/86a98f1e31a850317778766d1fa7bb69.png)](https://gyazo.com/86a98f1e31a850317778766d1fa7bb69)
##### サービスURL: https://www.justbe-u.com
##### Github: https://github.com/yoshi5170/self_acceptance_journey
##### Xアカウント: https://twitter.com/Justbe

元記事を表示

商品が購入された時の条件分岐

# はじめに
今日の学習で学んだことを掲載していきます。
初心者ですので温かく見守ってください、、、、
# 商品が購入された場合の条件分岐
今回は商品が購入された場合にはSold Out!!の文字が出るように実装しました。
#### 商品一覧画面
“`html
<% if item.order %>

Sold Out!!

<% end %>
“`
itemという商品が保存されているテーブルとorderという商品が購入されたことが保存されるテーブルの二つが存在し、これらはアソシエーションが組まれています。
ですので、orderテーブル内にitemがあった場合に文字が反映されるような条件分岐は上記のようになります。

#### 商品詳細画面
詳細画面における「購入ボタン」「削除ボタン」「編集ボタン」の表示の条件分岐にも同じように記載します。
“`html
<% unless @item.order %>
<% if user_signed_in? %>

元記事を表示

rails環境新規構築(importmap + bootstrap)

# はじめに
rails の新規構築って、初回しか利用しないので利用頻度が低く、rails7から色々な組み合わせもできるようになったので、少し調査した結果を備忘録として残します

# 準備

初期ファイルの生成
“`sh:コマンド
touch compose.yml
mkdir app
touch app/Dockerfile.dev
touch app/Gemfile
touch app/Gemfile.lock
touch app/template.rb
“`

“`sh:compose.yml
services:
app:
container_name: app
build:
context: ./app
dockerfile: Dockerfile.dev
command: bash -c “rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b ‘0.0.0.0’”
ports:
– 3000:3000
depends_on:

元記事を表示

Sorbet, tapiocaを導入して、Ruby On Railsで型チェックを行う。

環境

  • WSL2
  • Rails 7.1.3
  • ruby 3.2.2
  • sorbet (0.5.11255)
  • sorbet-runtime (0.5.11255)
  • tapioca (0.12.0)

目的

Sorbet, tapiocaを導入して、Ruby On Railsで型チェックをできるようにする。

注意

tapiocaを使ってRBIファイルを生成する。sorbet-railsはサポートが終了するので使用しない。

sorbet-railsレポジトリ

This repository is no longer maintained and will be sunset. The Sorbet co

元記事を表示

enumの使用方法

### **enumとは?**

enum(enumeration: 列挙)は、名前を整数の定数に割り当てるのに使われるデータ型です。(列挙型というみたいです。)

名前は言語の定数として振る舞う識別子なので、整数を直に扱う場合よりもプログラムの読みやすさとメンテナンス性が向上します。

例::publicを0、:draftを1として、0や1で状態を定義できる

### 使い方

例として、article(記事)というモデルにstatus(状態)というカラムを作成し、それをenumを使って表します。

デフォルトで0(draft)になるように設定してます。

### カラム作成

“`ruby
class CreateArticles < ActiveRecord::Migration[6.0] def change create_table :articles do |t| # 他のカラムの定義 t.integer :status, default: 0 t.timestamps end end end ``` ###

元記事を表示

RailsみたいなRustフレームワーク「Loco」でWebAPIを爆速で立ち上げよう!

https://twitter.com/Jin__Sugimoto/status/1755256431564189985?s=20

先日、列車を走らせましたので解説していきます。

# 前提

・Rust実行環境があること

https://www.rust-lang.org/ja/learn/get-started

# Rustフレームワーク「Loco」とは?

公式サイト(https://loco.rs/)によると

「サイドプロジェクトやスタートアップのためのRustの一人用フレームワーク」

と定義されています。

高速でRust APIを立ち上げるためのサーバーサイドフレームワークと言えるでしょう。

うちのチームはクリエイター主体でエンジニアは僕しかいないので最適かもしれません。

以下が挙げられている特徴になります。

## バッテリー付属

1人チームを強化します。サービス、データ、メール、バックグラウンドジョブ、タスク、それを動かすCLI、すべてが含まれています。

## Railsは素晴らしい

LocoはRailsに従っています。Railsのコンセプトは、最新

元記事を表示

docker上のrails7でwhenever

# wheneverをdockerで動かすには
– rails taskをcronに登録してくれる便利なgem、whenever
– rails taskはActiverecordを使えて便利
– dockerは原則1コンテナ-1daemon
– railsコンテナではpumaでhttpをdaemon化するため、cronをコマンドで常駐できない
– そのためdockerの起動方法を工夫する

# dockerのCMD注意点
– DockerfileにCMDを複数行記述しても最後の1行しか実行されない
– docker composeの場合、compose.yamlのcommandの方が優先される

Dockerで複数CMDを実行する方法

# docker上でwheneverを動かす
### とりあえずここから
– dockerでrails7が起動するとこ

元記事を表示

OTHERカテゴリの最新記事