- 1. [rails]「とりあえずransack付けてみたいだけなんです」
- 2. 【DeviseTokenAuth】UnsafeRedirectError解消法
- 3. Railsのserializerの使い方や導入手順について再認識する
- 4. dockerとdocker composeでwebアプリをdocker化する方法
- 5. データベースにアソシエーションを設定する
- 6. 「エンジニアDB」というサービスを開発しました!【Next.js / Rails / AWS / Terraform / Docker / GitHub Actions】
- 7. 経過月数を小数点込みで確認したい(Ruby)
- 8. 【Ruby on Rails 】undefined method `image_name’ for nil:NilClass
- 9. [devise] 退会済みユーザーをログインできないようにしてみた。[Rails]
- 10. Railsで作られたWebサービスをElasticBeanstalkからECS on Fargateに移行した話し(全体概要)
- 11. (未経験)技術士1次試験の過去問演習アプリつくった [Rails API + Next.js]
- 12. LiveViewとRails HotWireの比較
- 13. 【Ruby on Rails】No route matches [GET] “/logout”
- 14. Draperの使い方:モデルがファットにならないようデコレーターを活用する
- 15. stimulusを用いてテーブルのtdタグ全体をリンクにする方法
- 16. 【Rails】動的にDBのテーブルにカラムを追加してみる
- 17. rubyXLのエクセル出力で部屋に属する所属毎にシートを分けてusersを書き込んでいく
- 18. Rails APIエンドポイントの作成:基本操作
- 19. rails g model と rails g migration の違い
- 20. ActiveHashの初期値を設定したらエラーメッセージが出てこなかった件
[rails]「とりあえずransack付けてみたいだけなんです」
自力でプルダウンなど、文字入力以外の検索方法やソート機能を実装しようとすると少し大変かもしれませんが、gemのransackを用いると超簡単に作れてしまいます。
手っ取り早く実装してみたい人向けです。
細かい仕様等は公式ドキュメントを参照してください。
# 前提
– crud実装済み
– 本記事ではpostモデルでMVCを組んでいます# 実装
> gemのインストール
“`rb:Gemfile
gem ‘ransack’ #追記
“`
追記後ターミナルで`bundle install`を実行> controller記述
“`rb:PostsController
class PostsController < ApplicationController def index @posts = Post.all #投稿一覧表示用(もともとある前提) @q = Post.ransack(params[:q]) #追記 @posts= @q.result #追記 end end ``
【DeviseTokenAuth】UnsafeRedirectError解消法
## はじめに
DeviseTokenAuthを使用している際に`redirect_to`が実行されると`UnsafeRedirectError`が発生します。
エラーに関する詳細は以下のページをご参照ください。
https://api.rubyonrails.org/v7.1/classes/ActionController/Redirecting.html#method-i-redirect_to
## 解消法
外部リダイレクトしているコントローラーに以下を追加します。
“`rb
def redirect_options
{ allow_other_host: true }
end
“`## 参考
https://github.com/lynndylanhurley/devise_token_auth/pull/1599
https://github.com/lynndylanhurley/devise_token_auth/issues/1536
Railsのserializerの使い方や導入手順について再認識する
## 最初に
私は、大学生であり、もう少しでWebエンジニアとしてのキャリアが始まる為、現在学習している内容などを投稿していきたいと思います。
## serializerについて
serializerとは、RailsでAPIを作る際、データをJSON形式にわかりやすく変換して適切な制御できるgemの事です。
例えば、userのデータ情報が`id`,`name`,`email`,`created_at`,`update_at`とあったとして、user情報をAPIから送る際に全ての情報を送るのは、セキュリティの面で問題となるので、userの全ての情報のうち、どの情報をレスポンスするのかを制御する為にserializerを導入します。
## 1. gemのインストールと設定
– gemインストール
Railsでserializerを扱う為には、Gemfileにgemを追加してインストールする必要があります。
“`ruby:Gemfile
gem ‘active_model_serializers’
“`
上記をGemfileに追記した後にgemをインストールします。
“
dockerとdocker composeでwebアプリをdocker化する方法
## はじめに
アプリの開発環境の構築はめちゃくちゃエラーが出ます。
そして、開発環境、テスト環境、実行環境とそれぞれの環境を構築する際もやはりめちゃくちゃエラーがでます。
その環境を一括管理できるのがDockerです。
環境ごとをコンテナで管理できるのがものすごく便利です。
今回はそのDockerを使って、Webアプリをdocker化する方法を紹介します。## Dockerをインストール
公式から自分のPCやCPUに合ったものをインストールしましょう。
https://docs.docker.com/desktop/install/mac-install/?_fsi=KfUS4RTU
## 条件
– Docker未使用の環境で動作するRailsのwebアプリを用意する。
– RailsアプリはRubyのバージョン3.2.2、dbとしてpostgresのバージョン12を使用する。## 方針
– コンテナは2つ用意する
– WebはRailsのアプリを動かす
– dbはpostgresを動かす
– docker-compose upでRailsプロセス
データベースにアソシエーションを設定する
(dockerを使っているのでターミナルのコマンドにdockerが入っていたりします・・)
### generateコマンドを使ってBoardモデルを作成する
“`
rails g model Board user_id:integer title:string body:text
“`
データベースにusersテーブルを作るためのマイグレーションファイルと、Userモデルが作成される。### マイグレーションファイルを編集する。
(空欄を許可しない設定を追加)
“`
class CreateBoards < ActiveRecord::Migration[7.0] def change create_table :boards do |t| t.integer :user_id t.string :title, null: false t.text :body, null: false t.timestamps end end end ``` ### マイグレーションを実行して、データベースにus
「エンジニアDB」というサービスを開発しました!【Next.js / Rails / AWS / Terraform / Docker / GitHub Actions】
## はじめに
こんにちは! ひらぬま([@koocookooc](https://twitter.com/koocookooc))と申します。今回、[Happiness Chain](https://happiness-chain.com/) の卒業課題として、
「[エンジニアDB](https://engineer-db.com/)」という、『〇〇なエンジニアを検索できるサービス』を開発したので、紹介します。ターゲットは、エンジニアの皆さんに向けていますので、ご利用いただけると嬉しいです。
https://engineer-db.com/
無料でご利用頂けます。
### 自己紹介
大学(建築学)を卒業後、新卒で大手ハウスメーカーのIT事業部に入社しました。3年ほどITの企画、PM、設計、開発、テストなどを通して、ITのイロハを身につけました。その後、より良いサービス・プロダクトを作れる人になるためには、開発サイドの経験もしておきたいなぁと思い、Web受託開発会社にエンジニアとして転職しました。今でちょうど2年目になります。
そんな筆者が開発した個人開発サービスを
経過月数を小数点込みで確認したい(Ruby)
## あらまし
例えば退職された方が、その会社に何か月在籍していたのかを計算する際に「25ヶ月在籍してた」というのはとても簡単に計算出来るけど、日数まで含めて「24.67ヶ月在籍してた」という計算の仕方は意外とサンプルコードが転がっていないようです。無ければ作れば良いという事で作成したので誰かの何かの役に立てれば。
## 考え方
年と月は簡単です。
上記の例では退職日と入社日の差分を取ったうえで”年”は12をかけて”月”と足すだけです。“日”をどうやって小数点にするかですが、退職日から入社日の差分を取り、退職月の日数を取得して割り算をしています。(1月の場合は31日で割り、2024年2月の場合は29日で割ります)
これをせず雑に30で割ると、小数点以下が若干おかしな事になってしまいます。
……と思ってコード書いて完成したつもりでしたが見直してたらバグがありました。
2/2入社、2/29退職 0.97ヶ月 → OK
2/1入社、2/29退職 1.0ヶ月 → OK
1/31入社、2/29退職 0.93ヶ月 → NG (本来1.03になってほしい)## 修正版 考え方
結構
【Ruby on Rails 】undefined method `image_name’ for nil:NilClass
# 初めに
投稿一覧ページでそれぞれの投稿に紐付いているユーザ名や画像を表示できなかったので書きます。
# 問題
以下エラーに遭遇しました。
![スクリーンショット 2024-01-24 20.09.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536873/d6ec7692-41ee-d728-fef1-652a6d0f0b89.png)
# 解決方法
エラー文から推測して、この辺りを調査しました。
① Viewファイルの誤字脱字
② Postsコントローラーのindexアクション内でインスタントメソッドuserの定義忘れ
③ インスタントメソッドの理解不足
②まで調査して、インスタンスメソッドが何をしているのか理解できていなかったので復習しました。復習を終えて、③が原因ではないと分かりました。そこで、こちらの記事を参考にデータベース周りを調べました。
https://qiita.com/TeppeiMimachi/items/755639c775c72cb73ad9
[devise] 退会済みユーザーをログインできないようにしてみた。[Rails]
# はじめに
devise.gem を用いた標準的なユーザー認証は、先人の方々がQiita等に記載してくださってあるのですが、「退会したユーザーはログイン不可にする」といった、divise 機能の上書きが必要な内容に関しては見当たらなかったので、備忘録も兼ねて記していきたいと思います!devise.gem の導入などの基本的な部分に関しては、先輩方の分かりやすい記事が沢山転がっているので、割愛させていただきます。m(_ _)m
# 実装したいこと
①enum を用いたユーザーステータスの実装
②退会済みユーザーはログイン不可にする。# 設計について
上記内容を説明する上で、土台となる設計部分です。### User テーブル定義
Userテーブルには、説明のために基本的な内容としています。
statusカラムのデータ型が、integer型となっているのは、この後説明するenum を用いてユーザーステータスを定義するためです。| カラム名 | 説明 | データ型 |
|:-:|:-:|:-:|
| ID | ユーザーID | integer |
| name |
Railsで作られたWebサービスをElasticBeanstalkからECS on Fargateに移行した話し(全体概要)
# はじめに
医療系クラウドサービスを提供しているレイヤードという会社で働いています。弊社で提供しているWeb問診システムSymviewはRuby on Railsに構築しており、2017年からElasticBeanstalk(以下EB)を利用してオーケストレーション及びDeploymentを管理しておりました。
EBの機能的にはそれなりに満足していたし、長年使っていて運用ノウハウも溜まっていたのですが、主に下記に記載の理由からECSに乗り換えることにしました。:::note warn
本記事では完成形の移行にフォーカスして書いております。
アーキテクチャの選定や実装の試行錯誤、設定等の細かい話しは省いていますのでご了承ください。
:::## 課題
– EBがサポートする **プラットフォームの更新が遅く、最新バージョンのRubyをなかなか利用出来ない**
– オートスケールやデプロイ時のEC2のプロビジョニングでライブラリのインストールが毎回実施されるため、ライブラリの配布サイトの状態(サイトダウン等)によってはダウンロード失敗等でプロビジョニングエラーが発生する
(未経験)技術士1次試験の過去問演習アプリつくった [Rails API + Next.js]
## はじめに
はじめまして!
エンジニア転職を目指してプログラミングスクール[RUNTEQ](https://runteq.jp/)で学習中の[けーちゃん](https://twitter.com/mimi048599)と申します。
2023年1月より、**完全未経験**から**Ruby on Rails**を中心に学習し、この度、ポートフォリオとして「[技術士1次試験 基礎•適正科目 過去問ドリル](https://www.proengineer1exam.com/)」をリリースしたので、ご紹介させていただきます!https://www.proengineer1exam.com/
## 注意事項
:::note warn
私はプログラミング学習中で、**初学者**です。
内容に**誤り**がある場合があります。
コメント等で教えていただけると幸甚です。
:::## 作成したアプリ
アプリ名: [技術士1次試験 基礎•適正科目 過去問ドリル](https://www.proengineer1exam.com/)![opengraph-image.png](https
LiveViewとRails HotWireの比較
[piacere](https://twitter.com/piacere_ex) です、ご覧いただいてありがとございます :bow:
下記コラムで、Rails 7に標準搭載されたHotWireを試しましたが、Elixir/PhoniexのLiveViewと比較してみたいと思います
https://qiita.com/piacerex/items/b9cd99e2e051d24ce180
# 方式
## a)部分ページロード/レンダリング
### LiveView
– MorphJSによるDOMの部分更新
– LiveView StreamsによるDOMの部分追加/更新/削除### Rails
– Turbo Driveによるリンク操作のインターセプトとfetchへの置換、bodyタグ内のみの置換
– Turbo FramesによるDOMの部分更新
– Turbo StreamsによるDOMの部分追加/更新/削除## b)サーバサイドのデータ更新をフロントに反映
### LiveView
WebSocketによるPub/sub
### Rails
WebS
【Ruby on Rails】No route matches [GET] “/logout”
# 初めに
Rails7の環境でログアウト機能を実装していたときに、Rails5で書かれているProgateのプログラムで躓きました。
# 問題
ログアウト機能の実装でNo route matchesが起きました。
“`ruby
<%= link_to("ログアウト", "/logout", { method: "post" }) %>
“`# 解決方法
ルーティーンの設定は問題ありませんでした。記事を参考にlink_toメソッドを修正したら、ログアウト機能が動きました。
“`ruby
<%= link_to "ログアウト", "/logout", data:{ turbo_method: :post } %>
“`# 終わりに
バージョン違いによる仕様を理解できました。
Draperの使い方:モデルがファットにならないようデコレーターを活用する
## gem draperをインストールする
gemfileにgemを記載
“`
gem ‘draper’
“`bundle installする(下記はdocker使用の場合)
“`
docker compose run web bundle install
“`
システムにデコレーター層を追加
“`
rails generate draper:install
“`
デコレーターのファイルを追加
“`
rails generate decorator ○○(モデル名)
“`## モデル名_decorator.rbにコードを書く
“`
lass UserDecorator < Draper::Decorator delegate_all def full_name "#{object.first_name} #{object.last_name}" end end ``` ## viewファイルに記述を加える ``` <%= current_user.decorate.full_name %>
“`※サーバーの再起動を忘れずに・・
stimulusを用いてテーブルのtdタグ全体をリンクにする方法
私は現在、未経験からのエンジニア転職に向けてプログラミングスクールで学習をしている、いしかわと申します。
現在PFを作成していますがテーブルを描写した際に、`stimulus`を用いてテーブルの子要素全体をリンクにした内容をアウトプットとしてこちらの記事にしました。
どなたかの参考になれば幸いです。:::note warn
プログラミング初学者なので、内容に誤り等ある可能性があります
誤りがありましたら教えてくださると幸いです
:::環境
ruby 3.2.2
rails on rails 7.0.8
stimulus 3.2.2
tailwindcss 3.3.6
daisyUI 3.9.6# 実装
<% @completed_requests.each_with_index do |request, index| %>
daisyUIの`tableクラス`を用いてテーブルを以下のように作成しています
“`html:HTML<%= index + 【Rails】動的にDBのテーブルにカラムを追加してみる
どうもこんにちは。
今回は、動的にDBのテーブルにカラムを追加する方法をメモしていきます。
# 動的にカラムを追加とは?
本来であれば、DBのテーブルにカラムを追加する場合には、以下のような手順を踏むと思います。
1. マイグレーションファイル生成
“`sh
rails g migration AddNewColumnToSample
“`2. マイグレーションファイル編集
“`ruby
class AddNewColumnToSample < ActiveRecord::Migration[7.0] def change # addcolumn :テーブル名, :カラム名, :データ型 add_column :samples, :new_column, :string end end ``` 3. マイグレーション実行 ```sh rails db:migrate ``` しかし、「custom_itemsテーブルにデータが登録された場合に、登録されたデータの名前でsamplesテーブルにカラムを追加したい」ということが出てきます。rubyXLのエクセル出力で部屋に属する所属毎にシートを分けてusersを書き込んでいく
## はじめに
開発で部屋に属する所属毎にシートを分けてエクセル出力する必要があり、ある程度実装ができたのでまとめる。
初学者やrubyXLでエクセル出力を実装しようとしている方々に少しでも参考にもなれば嬉しいのですが、
なんちゃってエンジニアによる自分のアウトプット用の投稿なので、よくないコードの書き方や、または分量的に省略している箇所もございますのでご了承をお願いします。
アドバイスがありましたらコメントを頂けますと幸いです。## 出力フロー
roomの詳細ページから出力し、roomに紐づいているユーザー(users)を所属毎(affiliations)にシートを分けて用意してあるエクセルファイルに書き込んで出力します。
usersは中間テーブルのroom_usersを経由して取得します。## テーブル構図
roomsテーブル(部屋)
|rooms|
|:–|
|id|
|name|affiliationsテーブル(所属)
|affiliations|
|:–|
|id|
|name|usersテーブル
|users|
|:–|
|id|
|name|
|afRails APIエンドポイントの作成:基本操作
## **はじめに**
この記事では、Railsを使用して基本的なAPIエンドポイント(POST、PUT、GET、DELETE)を作成する方法をメモっぽく記載しておきます。## **必要なもの**
– Ruby on Rails
– RESTful APIに関する基本的な理解## **ステップ 1: Railsのセットアップ**
まずは、新しいRailsプロジェクトを作成する。ターミナルで以下のコマンドを実行“`bash
rails new my_api_project –api
cd my_api_project
“`このコマンドにより、API専用のRailsプロジェクトが作成される。
## **ステップ 2: モデルの作成**
今回はブログの記事を管理するための`Article`モデルを作成します。次のコマンドを実行“`bash
rails generate model Article title:string body:text
rails db:migrate
“`## **ステップ 3: コントローラの設定**
`Articles`コントロrails g model と rails g migration の違い
# はじめに
`rails g model`と`rails g migration`の違いについて、なんとなくの理解しかできていなかったので備忘録としてまとめます。
# rails g modelとは
このコマンドは、新しいモデル(データベーステーブルの設計図)を作成します。モデルはデータベースのテーブルに対応し、アプリケーション内でのデータの取り扱いやロジックの管理に使用されます。
コマンドの記述方法は以下のようになります。
“`
$ rails g model モデル名 カラム名:データ型
“`
## 実行方法
例えば、以下のコマンドを実行すると、Userモデルに対応するデータベーステーブルを作成するマイグレーションファイルが生成されます。
“`
$ rails g model User name:string email:string
“`
続いて、このマイグレーションを実行して変更をデータベースに適用します。
“`
$ rails db:migrate
“`
# rails g migrationとは
このコマンドは、手動でマイグレーションファイルを生成します。主にActiveHashの初期値を設定したらエラーメッセージが出てこなかった件
# はじめに
プログラミング初心者ですので、、温かく見守って頂けると幸いです。
何か間違っていたらコメントお願いします。
# エラーメッセージが出てこない
[![Image from Gyazo](https://i.gyazo.com/47e4958e4b02fbe12628de441de857c8.png)](https://gyazo.com/47e4958e4b02fbe12628de441de857c8)
ActiveHashを使用した入力フォームの初期値に上記のような初期値を設定していましたが、そうするとエラーメッセージが出ないという状況に陥りました。
しかも、初期値ではエラーメッセージ出ないのに、普通に項目を選択して保存しようとすると、”Category can’t be blank”というエラーが、、、(選択してるのに、、、)# 解決
原因ははっきりしていませんが、修正した箇所としては、
idを0~から始めるのではなく1~から始めた。(上記の画像は修正後)
ビューのnew.html.erbの
**<%= f.collection_select(:category_i関連する記事
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関連のことを調べてみた