- 1. [Rails]バッチ処理を実装出来るエンジニアに俺はなる!
- 2. 【Ruby on Rails】非同期通信でブックマーク機能の実装方法(お気に入り、いいね)
- 3. 1周目 railsチュートリアル第6章
- 4. Ruby on rails / フォロー機能
- 5. Vue.jsを用いてBGMサウンドを流したい
- 6. 【Rails】 投稿とユーザーの紐付け(メモ)
- 7. [Ruby] indexメソッド
- 8. 【Rails】取得したenumの値とモデルのenumを比較する方法
- 9. carrierwaveを利用してawsのs3に画像をアップロードできるようにし、画像未アップロード時にはデフォルト画像を表示させる方法
- 10. 【Rails】初学者の私が復習に使う記事まとめ(Qiita以外)
- 11. RailsでDBをSQLiteからPostgreSQLに変更する方法
- 12. ログイン後の遷移先を変更する方法
- 13. 重複したコードを綺麗にリファクタリングしてみた
- 14. 作業時間を計測するには?
- 15. Rails6.2版 Relation配列指定でORクエリーを作る拡張
- 16. belongs_toをbelong_toと書いていたこと
- 17. 【Ruby on Rails】時間表示に関する記事いつも検索するからまとめてみた
- 18. ログイン前にトップページを表示させる方法
- 19. resourceとresourcesの違いについて
- 20. 【Rails】エラーメッセージ表示
[Rails]バッチ処理を実装出来るエンジニアに俺はなる!
# はじめに
実務でバッチ処理を実装することがあるかと思いますが、右も左も分からず悔しかったので学習したものを備忘録としてまとめようと思います!自分と同じくまだ理解してない人はぜひ参考にしてください!# バッチ処理とは
バッチ処理とは、アプリケーションに関するデータの参照と更新をソースコードに書かれた仕様に従って実現します。
大量のデータを更新する処理や時間を必要とする処理も取り扱うことができます。例:情報の一括更新、バックアップの作成…etc
# バッチ処理実装方法
自分の調べた感じで言うと、主に2つの実装方法があるらしいので、どちらがよく使われてることもないと思うので、どちらも紹介したいと思います!## Rails Taskを用いた実装
1.`lib/tasks`配下にrakeファイルを作成します。
※あるまとまりごとにディレクトリを作成することが多いようです“`bash
$ touch lib/tasks/samples/sample1.rake
“`2.作成したrakeファイルに処理を実装していく。
“`lib/tasks/samples/sa
【Ruby on Rails】非同期通信でブックマーク機能の実装方法(お気に入り、いいね)
#対象者
* ブックマーク機能を実装したい方
* お気に入り、いいね機能を実装したい方#目的
* ブックマークして記事の保存や後で見るための機能を実装をする
#実際の手順と実例
###1.前提* 投稿機能実装済
* device機能実装済
* ArticleとUserモデルがある###2.モデルの作成
ターミナルでモデルを作成します。
“`ターミナル
$ rails g model Bookmark user:references article:references
“`実行後はマイグレーションファイルを編集します。
“`db/migrate/000000000000_create_bookmarks.rb
class CreateBookmarks < ActiveRecord::Migration[5.2] def change create_table :bookmarks do |t| t.references :user, foreign_key: true, null: false t.refere
1周目 railsチュートリアル第6章
#目次
[1.前回](#1-前回)
[2.概要](#2-概要)
[3.内容](#2-内容)
[4.用語のまとめ](#3-用語のまとめ)
[5.感想](#4-感想)
[6.おわりに](#5-おわりに)#1. 前回
https://qiita.com/ak-matsu/items/ba79cfc46793e5432561
#2. 概要
ユーザーのモデルを作成する。
ユーザー用のデータモデルの作成と、データを保存する手段の確保を行う。#3. 内容
### Userモデル
完成図
![6章の完成図.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459220/a5d72bf1-9633-3a43-73f4-7a71dbc87c14.jpeg)MVCのM=モデルデータモデルを扱うデフォルトのデータ構造
データの永続化=データベースを使う
RailsのライブラリではActiveRecordという。
ActiveRacordはデータオブジェクトの作成、保存、検索のメソッドを持っている。
Railsはデ
Ruby on rails / フォロー機能
# はじめに
フォロー機能の理解にかなり時間を要したため、備忘録として記録を残しておこうと思います。
また、どなたかのお役に立てたら幸いです。今回は、Userモデルは作成済みの段階からスタートします。
# 目次
0. アソシエーションの理解
1. モデル作成
2. コントローラー作成
3. ビュー作成
4. ルーティング作成# やってみよう
### 0.アソシエーションの理解
今回は多対多のアソシエーションとなり、
Relationshipsテーブルが中間テーブルです。![スクリーンショット 2021-08-30 19.21.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1902432/5dbd3979-543b-d4c0-4c59-6896e0a6657c.png)
結ぶのはどちらもUsersテーブルで、
modelの定義が難しく、苦戦しました。### 1.モデル
まずは、Relationshipモデルを作成します。
“`ruby
rails g model Re
Vue.jsを用いてBGMサウンドを流したい
今コーヒーに関するアプリを作ってるので、アプリに自動でcafe musicが流れたら面白いなぁと思ったので、
vue-jsでそれらの機能を実装してみたい。https://www.it-mure.jp.net/ja/javascript/vuejs%E3%81%A7%E3%82%B5%E3%82%A6%E3%83%B3%E3%83%89%E3%82%92%E5%86%8D%E7%94%9F%E3%81%99%E3%82%8B/831052767/
これら玉稿を参考にしていきたいと思います。
必要であればyoutube APIをvueで叩いていくのもなくはない。
追記[.mp3といった音源ファイルが必要らしい。]# いざ実装。
https://github.com/SevenOutman/vue-aplayer/blob/develop/docs/README.md
と思ったら、
Failed to compile../node_modules/vue-aplayer/dist/vue-aplayer.mi
【Rails】 投稿とユーザーの紐付け(メモ)
# 目標
* 投稿とユーザーの紐付け
# 環境
* Rails: 6.1.3
* ruby: 3.0.0
* mac: OS# 前提
* 投稿機能実装済み# 実装
### 1.`post`テーブルに`user_id`カラムを追加“`ruby:ターミナル
$rails g migration AddUserIdToPosts user:references
“`“`ruby
class AddUserIdToPosts < ActiveRecord::Migration[6.1] def change add_reference :posts, :user, null: false, foreign_key: true end end ``` ```ruby:ターミナル $rails db:migrtate ``` ### 2.モデルに`has_many`と`belongs_to`を記述 ユーザーは投稿が複数持てるので `has_many` ```ruby:app/models/user.rb class User < Applic
[Ruby] indexメソッド
##はじめに
indexメソッドという便利なメソッドを見つけたので記事に残しておきます。##indexメソッド
indexメソッドはある要素が配列のどこにあるか調べる際に便利です。例えば3が配列のどこにあるか知りたい場合
“`ruby
array = [3, 2, 4, 1]
array.index(3)
=> 0
“`上記のように引数にどこにあるか調べたい要素を渡すと、インデックス数で配列のどこの位置にあるかを教えてくれます。
インデックス数で示されるので3は0で返ってきます。
【Rails】取得したenumの値とモデルのenumを比較する方法
取得したenumの値とモデルのenumを比較することができず、詰まったので、同じ轍は踏まないように情報共有したいと思います。
## 準備
User.rbでenumを設定“`ruby
enum sex: {
# 無回答
no_answer: 0,
# 男性
male: 1,
# 女性
female: 2,
}
“`rails console
“`ruby
# enumを確認
User.sexes
=> {“no_answer”=>0, “male”=>1, “female”=>2}
User.sexes[:male]
=>1# インスタンスを取得
user = User.find(4)# インスタンスのenumを確認
user.sex
=>”male”
“`## 詰まったこと
enumの比較ができない・・・
### 実現したいこと
「インスタンスのsexがmaleであるとき」の条件式が作りたい。
### 試したこと
“`ruby
user.sex == User.sexes[:male]
=> false
“`
・・・できな
carrierwaveを利用してawsのs3に画像をアップロードできるようにし、画像未アップロード時にはデフォルト画像を表示させる方法
#はじめに
carrierwaveで画像アップロード機能を実装後、アップロードされた画像はAWSのS3に保存できるようにする方法を解説いたします。
なお、carrierwaveを導入していることを前提に解説しています。
carrierwaveの実装がまだの方は[こちらの記事](https://qiita.com/yusei_boxing/items/8c9c2b5ece2fbadc3327)を参考にしてみてください。
#AWSのIAMユーザーとS3バケットの作成
##IAMユーザーの作成
– まず、awsコンソールにログインし、IAMサービスにアクセスします。
– そして、項目のユーザーから「ユーザーを追加」をクリックします。
![スクリーンショット 2021-08-30 12.45.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1161581/0e96f47d-6255-4b28-f382-08bf6aa3e7f3.png)
– ユーザーの設定を行います。![スクリーンショット 2021-08-
【Rails】初学者の私が復習に使う記事まとめ(Qiita以外)
#目的
Qiitaで参考サイト管理を完結させるため。
自己満でブックマークの代わりとして使います。#参考リンク
###機能▷【Rails】 ransackを使って検索機能がついたアプリを作ろう!
https://pikawaka.com/rails/ransack
RailsでDBをSQLiteからPostgreSQLに変更する方法
Rails6では、DBの変更がコマンド1つ実行するだけで可能
—
※備忘録として記録します。[参考のサイト](https://k-koh.hatenablog.com/entry/2020/08/14/144129)で、紹介されていたので実行してみました。
“`
# DBをPostgreSQLへ変更するコマンド
$rails db:system:change –to=postgresql
“`このコマンド実行後、database.ymlやGemfileを確認したところ、DBがPostgreSQLへ変更されていました。
MySQLへ変更も可能です。ActiveRecordが接続しているDBの確認は、`rails c` でコンソール実行後、irbやpryで`ActiveRecord::Base.connection_config`を実行すると確認できます。[[参考サイト]](https://qiita.com/ke-bo/items/9cbbe6a63a80711607e9)
参考サイト
—-
https://k-koh.hatenabl
ログイン後の遷移先を変更する方法
# 内容
deviceを用いてログイン機能を実装し、特に何も設定していないと root_path で指定したページに遷移すると思います。
そこで、ログインやゲストログイン後の遷移先を自由に指定する方法を紹介します。# ログイン後の遷移先の指定
“`application_controller.rb
class ApplicationController < ActionController::Base before_action :authenticate_user! #以下のメソッドを記入 def after_sign_in_path_for(resource) prefix_path #遷移させたいページのpathを記述 end end ``` /users/application.rb に after_sign_in_path_forメソッドを用いて、ログイン、サインイン後に遷移させたいページのprefix_pathを指定することで変更できます。 # ゲストログイン後の遷移先の指定 ```sessions_controller.rb c
重複したコードを綺麗にリファクタリングしてみた
#今回の内容
作成していたポートフォリオがやっと形になり、メンターの方にコードレビューをしてもらったときの気付きを備忘録も兼ねて紹介しています。#該当箇所の画面
![527e45fe1a0464890f4c66be9f41d89c.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131643/7bb4c58b-5b58-1428-aa08-8ee84825702e.gif)#環境
`macOS Big Sur 11.2.3`
`ruby: 2.7.2`
`rails: 6.1.3`
`テンプレートエンジン: slim`
`レイアウト: bootstrap4`#前提
– bootstarpの導入は省いています
#リファクタリング前のコード
`bootstap4`の`class`を使用してページ毎にボタンの色を変更しています。`btn-primary`: 青色
`btn-light`: 灰色“`app/views/users/travel_records.html.slim
作業時間を計測するには?
# 動機
最近、実際に作業出来た時間の記録として、始まりと終わりの時間をメモっているのですが、
始まりから、終わりまで何時間の作業が出来たのか計測するツールが欲しかった。ぶっちゃけウェブサイトにいくらでもその手の便利ツールはあるけれど、
これくらいなら自分でも作れるんじゃいかな、やってみよって感じです。## やったことその①
欲しいのは時間と分だけなので、入力の手間考えて、
1234と入力→12時34分と認識
って感じのを2つ並べて計算すりゃいいじゃんと。“`ruby:勘違いオツな履歴
puts “始まりの時間と分を4桁で入力してください(例:12時34分→1234)”
start = gets.to_i
sta1 = start / 100
sta2 = start % 100puts “終わりの時間と分を4桁で入力してください(例:12時34分→1234)”
stop = gets.to_i
sto1 = stop / 100
sto2 = stop % 100jikan = sto1 – sta1
hun = sto2 – sta2p jikan
Rails6.2版 Relation配列指定でORクエリーを作る拡張
# 目的
Railsデフォルトのorだと、何らかの動的な仕様の都合でRelation条件配列として保持している場合、ORを適用するのが大変
“`ruby
first_condition = or_conditions.shift
or_conditions.inject(first_scope) do |merged_scope, scope|
merged_scope.or(scope)
end
“`# 理想
このような形でサクッとORクエリーを作りたい
“`ruby
User.where.or(*or_conditions)
“`# 実装
[Rails5版 OR クエリ構築するマン](https://qiita.com/ighrs/items/86ba018d74514e1196a3) のRails6.2版(merge! → and!)
Rails6.2からmergeが厳密になり、統合方法の指定が必要になり汎用拡張には使えなくなった、そのため条件の追加である and! を使ってRelationにOR条件を追加する
“`ruby
# initial
belongs_toをbelong_toと書いていたこと
# belongs_toをbelong_toと書いて、作業が止まってしまった。
かなり初歩的なミスですが、学習中にbelongs_toをbelong_toと書いて、この間違いを探し出せず作業が止まってしまいました。“`ruby:ruby
belong_to #belongsの s が抜けており、このままだとエラーが出ます。
“`“`ruby:ruby
belongs_to #なので、このように忘れずにbelongsと書きます。
“`
# さいごに
このミスは、「記述ミスが一つでもあると動かなくなる。」ということが改めて分かったことでもあります。この記事は自身のミスに常に目を光らせておくという戒めとして書きました。今後は自分のミスにいち早く気づけるようにしていきたいです。
【Ruby on Rails】時間表示に関する記事いつも検索するからまとめてみた
#対象者
* 時間の表示に関して調べている方
#目的
* 時間表示の方法を1つの記事にまとめて整頓する
#実際の手順と実例
###1.タイムゾーンタイムゾーンを日本時間にする方法を下記の記事を参考にさせて頂きました。
https://qiita.com/katsutakashima/items/1453ed0c97a818ddd731
““config/application.rb
module App
class Application < Rails::Application # Settings in config/environments/* take precedence over those specified here. # Application configuration should go into files in config/initializers # -- all .rb files in that directory are automatically loaded. config.time_zo
ログイン前にトップページを表示させる方法
# 内容
アプリを作成するにあたり、ログインする前でもトップページが表示されるように設定しました。
# 解決法deviceを使用してログイン機能をつけた場合、
“`application_controller.rb
before_action :authenticate_user!
“`を記述することで全てのコントローラーでアクションが動く前にログインしているかしていないかを判断され、ログインしていなければログインページにリダイレクトされるようになります。
“`routes.rb
root “tops#index”
“`
この状態では、root_pathにトップページを指定してもログインページに飛ばされてしまいます。どうにかしてtopsコントローラーでは before_action :authenticate_user! を無効化したいですね。
そんな時は、skip_before_action を使います。“`tops_controller.rb
class TopsController < ApplicationController skip_bef
resourceとresourcesの違いについて
# はじめに
本記事では、resourceとresourcesの違いについて記述します。# resources
`resources`とは、
7つのアクションへのルーティングを自動生成するメソッドです。resourcesの引数に、:itemsなどという+シンボルで指定すると/usersのパスに対応するルーティングが生成されます。
“`
% rails routesGET /items(.:format) items#index
POST /items(.:format) items#create
GET /items/new(.:format) items#new
GET /items/:id/edit(.:format) items#edit
GET /items/:id(.:format) items#show
PATCH
【Rails】エラーメッセージ表示
# 目標
* エラーメッセージを表示させる
![スクリーンショット 2021-08-29 20.36.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1927584/7393e52e-4229-c9c5-2c43-0cf10cc95c3f.png)* ユーザーの登録や投稿がなんで失敗したか知らせてくれるメッセージ
# 実装
エラーメッセージのファイル作成“`erb:app/views/layouts/_error_messeages.html.erb
<% if model.errors.any? %><% model.errors.full_messages.each do |message| %>
- <%= message %>
<% end %>
関連する記事
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関連のことを調べてみた