- 1. 【Rails】メンション付きコメントがあった際にメールで通知をする方法
- 2. Ruby基礎①
- 3. File.deleteのちょっとしたテクニック
- 4. View側の繰り返し処理に対応してJavaScriptで動的にidを取得する方法
- 5. 【Rails】いいね機能の実装ー中間テーブルとはなにか?ー
- 6. 【Ruby】予約語一覧
- 7. コメントに対する返信機能 モデルの親子関係を自己結合で実装
- 8. 【勉強】大学院生がRuby on Rails勉強してみた
- 9. 【Ruby】演算子優先順一覧
- 10. 【個人開発】ソロ活をお助け!ひとり外食専用投稿アプリを作成しました🍽️【Rails】
- 11. 【Rails】delete_allでエラーが発生する
- 12. プロフィール画像の編集を非同期処理で実装する方法
- 13. [Ruby/AWS]alpha vantage APIを使って株のデータをRedshiftに入れる
- 14. 休日に新しい言語に触れたい ~Ruby編 特徴的なコードを実装してみる~
- 15. Paizaで遭遇したRuby メソッドまとめてみた。
- 16. オブジェクトとハッシュを照合するには?flattenメソッドの使用
- 17. yarn install –check-filesをしたらnode-sassが読み込まれないエラー
- 18. YAMLの作法
- 19. Railsでアバター画像が設定されていないときにプロフィール編集ページにリダイレクトする設定方法
- 20. 【Rails】グループ機能の実装手順
【Rails】メンション付きコメントがあった際にメールで通知をする方法
## はじめに
Webアプリでよくある、@username でメンション通知をできる機能を実装したので、やり方を残しておきます。### 学べたこと
– `after_create`などのコールバックを使う際のデータの扱い方
– メールを送りたいときのメソッドの作り方
– 絶対リンクの作り方## やりたいこと
ポストに対してのコメントで’@username’と記述した際にメンション通知を飛ばしたい。
メール送付は非同期処理で行いたい。### 前提
– Redisとsidekiqを導入## やり方
### 方向性
1. メンション通知用のメソッドをMailerを作って実装
1. viewの作成
1. `after_create`を使って、Commentモデル内にメール送付のメソッドを定義
1. 保存したコメントの内容から’@’に反応してusernameを検知
1. もしメンションされていたら、メールを送信### Mailerの内容
“`ruby
class CommentsMailer < ApplicationMailer def mention
Ruby基礎①
# 久しぶりに勉強してみる
昔スクールで勉強したことあるが使う機会がなかったので全然使っていなかった。しかし意味働いているベンダーはRubyを使っているみたいだ。親会社もグループ会社もRuby、最近だとサーバレスなフレームワークを使うみたいだが。TypeScriptをやった方がいいと言いつつRuby on Railsの需要もまだある。
公式は日本語もあるので学習しやすいだろう。
[official](https://docs.ruby-lang.org/ja/3.3/doc/index.html)https://docs.ruby-lang.org/ja/3.3/doc/spec=2fliteral.html
“`ruby
# 数値の123、文字列などをリテラルという。
# Rubyで使える例# 数字
puts 123# 文字列
puts “Hi”# 配列
puts [1, 2, 3]# ハッシュ
puts {‘ja’ => ’81’}# 変数名 = 式や値
num = 123
puts numgreet = “Hi”
puts greetis
File.deleteのちょっとしたテクニック
## はじめに
RubyのFile.deleteメソッドを使うときのちょっとしたテクニックを紹介します。
## 環境
Ruby2.6
## 内容
File.deleteはファイルを削除するメソッドです。データベースから読み込んだ内容をテキストファイルに書き込みをするような場合、同じ名前のファイルが既にあれば、このメソッドを利用して事前に削除します。
このメソッドをそのまま実行すると、つぎのような場合にエラーが発生することになります。
#### 削除対象のファイルがないとき
ないファイルに対して削除しようとするとエラーが発生します。そのようなファイルはありませんという内容のエラーです。
Rubyにはなぜか、VBにはあったエラーが発生した行の次の行から処理を再開させる、Resume Nextに該当するメソッドがありません。(これ便利だったんだけどな・・・)
例外に飛んだ後、エラーに該当するerrnoでキャッチして、そこでなんらかの処理をしなくてはいけないことになります。
Rubyには代わりに、エラーが発生した行に戻る、retryといったメソッドがあります。例外の中で何
View側の繰り返し処理に対応してJavaScriptで動的にidを取得する方法
## はじめに
インスタ風のアプリを作成している中で、Ralis側で繰り返し処理をしている箇所にJavaScriptでcssクラスをつけたり外したりする処理 などの実装に苦戦したので、実装方法を整理してアウトプットします。## やりたいこと
記事の一覧画面でAjaxを使って、いいねができるようにしたい
### 問題
show.htmlのようなpost_idが一意に決まっているようなページをJavaScriptで操作するのではなく、
index.htmlのようなpostがたくさん表示されているページから各ポストのidを個別に指定して操作していく実装がわからなかったです。#### viewはこんな感じ
“`ruby
– @posts.each do |post|
.card
= image_tag post.user.profile.avatar
= show_posttime(post)
= post.user.username– post.images.each do |image|
= image_tag image
【Rails】いいね機能の実装ー中間テーブルとはなにか?ー
## はじめに
初学者向けのRails講座には、大抵の場合いいね機能の実装が含まれていると思います。
ただ、いいね機能を実装するための”中間テーブル”は、概念的で理解しにくいところがあるため、自分の整理のためにもアウトプットします。### 前提
– インスタ風のアプリを作成
– userがpostを投稿する感じ
– 他のuserのpostにいいねできる機能を作りたい### 何がしたいのか
– いいね機能を実装したい
– postの一覧画面(post/index.html)からいいねできるようにしたい### どうする必要があるのか
– 中間テーブル(likesテーブル)を作成する
– 一意性制約をつける
– likesテーブルを通していいねしたPostを取得できるようにする
– routesの工夫## 実装方法
### 中間テーブルを作る
1. 普段通り`rails g model Like`でモデルを作る
1. マイグレーションファイルを編集
1. reference でuserとpostを追加
1. 複合インデックスを追加し、一意性制約をつける
1.
【Ruby】予約語一覧
以下は予約語です。予約語は原則、変数名やクラス名として使用できません。
“`
BEGIN class ensure nil self when
END def false not super while
alias defined? for or then yield
and do if redo true __LINE__
begin else in rescue undef __FILE__
break elsif module retry unless __ENCODING__
case end next return until
“`https://docs.ruby-lang.org/ja/latest/doc/spec=2flexical.html
コメントに対する返信機能 モデルの親子関係を自己結合で実装
この記事はプログラミング学習者がアプリ開発中に躓いた内容を備忘録として記事におこしたものです。内容に不備などあればご指摘頂けると助かります。
## 記事投稿の背景
ここではXのクローンサイトを作成中に実装した機能についてご紹介します。投稿に対してコメントをする機能までは実装していたのですが、コメントに対する返信機能を実装する時に実装方法が分からずに調べた内容となります。## 実装したコードの紹介と解説
“`ruby:マイグレーションファイル
class AddParentIdToComments < ActiveRecord::Migration[7.0] def change add_reference :comments, :parent, foreign_key: { to_table: :comments } end end ``` - `parent_id`というカラムをcommentsテーブルに追加します。 - `foreign_key: {to_table: :comments}`の部分でこのカラムにforeign_keyとしての制約を与え、そのキ
【勉強】大学院生がRuby on Rails勉強してみた
## はじめまして
こんにちは.理系大学院生(数学専攻)です.
備忘録的に文章を残しておこうと思います.誰かの役に立てば万々歳ぐらいのやつです.就職した後に自分で見て赤面してくれー(笑).## どんなひと?
AtCoderで競技プログラミングをやったりちょっっとだけ研究でプログラムを書いたりしているだけで,あまりにも開発経験が浅いということだけ先に.
競プロでPython,研究でC言語を使っています.最近就活しなきゃなーってなってインターンに参加してみたはいいものの,本当に参加しただけになってしまった気がしてる(一応選考ルート乗ってみるけど不安)
## エンジニアインターンに参加してみて分かったこと
### ①エンジニアのしゃべってる言葉が分からない
くらす?えらーはんどりんぐ???いんすたんす?????みたいな.話に全然ついていけなくてめちゃくちゃ迷惑かけました
### ②バックエンドでRuby on Railsが使われがち
私が見てる会社だけかも.MVCモデルおもろそう.
### ③プログラミングやっぱりたのしい!
これは本当に気付けて良かったこと.エンジニアたのしそう.
【Ruby】演算子優先順一覧
| 順位 | カテゴリ | 演算子 |
|——|——————————|—————————-|
| 1 | スコープ | x::y |
| 2 | 配列 | [x, y, z] |
| 3 | 正、否定 | +x、!x、~x |
| 4 | べき乗 | x ** y |
| 5 | 負 | -x |
| 6 | 乘算、除算、剩余 | x * y、x
【個人開発】ソロ活をお助け!ひとり外食専用投稿アプリを作成しました🍽️【Rails】
# はじめに
こんにちは、なかじ(@nakayama-bird)と申します。
現在、プログラミングスクールに通ってRuby on Railsを学習しております。
今回スクールの卒業制作として、ひとり外食に特化した飲食店の投稿アプリを作成しました。**サービスURL**
[Me Time Meals | ひとり外食投稿アプリ](https://www.metime-meals.com/)
![ogp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760414/426caa33-0097-02b6-a57c-10479f3a495b.png)**リポジトリ**
https://github.com/nakayama-bird/metime-meals
:::note warn
私はプログラミング学習中で、初学者です。
内容に誤りのある場合がございます。
もし間違いがあればご指摘いただけますと幸いです。
:::
## 目次
[1.アプリの紹介](#1-アプリの紹介)
[2.技術構成](#2-技術
【Rails】delete_allでエラーが発生する
## はじめに
Railsのアップデート中にdelete_allを使用している箇所でエラーが出たので、その対応をまとめます。## 問題
コード
“`ruby
User.delete_all(company_id: company.id)
“`エラー文
“`ruby
wrong number of arguments (given 1, expected 0)
“`## 解決方法
Rails7では、delete_allに引数を取れなくなっているので、whereを使用するように修正します。
“`ruby
User.where(company_id: company.id).delete_all
“`## 参考
https://qiita.com/migaruna_debu/items/ad685c6d75d7af5fa7d9
プロフィール画像の編集を非同期処理で実装する方法
## はじめに
railsのCRUD操作には慣れてきましたが、JavaScriptを使った非同期処理にまだまだ手こずっているので、学習記録として実装した非同期処理を記載します。
特に今回の実装ではchatGPTにかなり助けられた面があるため、なぜそのコードにしているのか、という点も含めて言語化していこうと思います。## やりたいこと
![20240915_recording.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3875060/54a3a46d-6e39-79e5-b899-29421081bf27.gif)– JavaScriptから画像をPOSTする
– POST後非同期処理でprofile画像を表示する### 具体的な方法
– axiosとrails-ujsを導入し、javascriptからpost/putする
– javascriptでプロフィール画像の設定状況を確認し、条件に応じて画像の出し分けをする### 前提
– rails6を使用
– UserとProfileは1
[Ruby/AWS]alpha vantage APIを使って株のデータをRedshiftに入れる
株のデータを分析してダッシュボードを作るため、今回はAWSのデータウェアハウスサービスであるRedshiftを使うことにした。
GoogleのBig QueryやSnowFlakeのようなサービスで、以下のブログの説明がわかりやすかった。
https://qiita.com/rm_zeal/items/b77818daff6f92fc5cd3
今回の実装で割と迷うところが多かったため、備忘録として残してみた。
## まずは株のデータを取得
株のデータはAlpha Vantageという無料の株APIから取得することに。https://www.alphavantage.co/
メインページから`GET FREE API KEY`をクリック
![スクリーンショット 2024-09-15 21.54.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3754242/18d5acfe-8225-e44e-75f0-a2a4141f9204.png)
情報を入れてGETボタンを押すと簡単にキーが
休日に新しい言語に触れたい ~Ruby編 特徴的なコードを実装してみる~
# はじめに
https://qiita.com/MichaelHashimoto/items/7b9004668421ae2cbb59
こちらの記事の続きです。
私はC#やPythonを仕事で使っているため、これらの知識をベースにして理解を広げます。同じような境遇の方の理解の助けになれば幸いです。
# 特徴的なコードを実装してみる
## ブロック
rubyに特徴的なものとして、”ブロック”があります。
まずは、以下のサンプルコードを見てください。
“`ruby
numbers = [1, 2, 3, 4, 5]
numbers.each do |number|
puts number * 2 # putsで出力
end
“`出力結果は以下で、numbersの各要素が2倍されたものが出力されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1223968/ece19765-005c-5247-93ec-9de3f3b24902.png)このように
Paizaで遭遇したRuby メソッドまとめてみた。
webエンジニアへ転職活動中の[ニノ](https://x.com/MuscleEngi87389)です!
これまで`Rails`については、学習、個人開発を行ってきましたが、就活で`企業のコーデイング試験`を解く中で、`ruby`についての理解ができていないことがわかりました。そこで`paiza`をここ1ヶ月くらい解く中で新しく知った`ruby`のメソッドや用語をまとめておこうと思います。
### 用語
#### irb : Rubyを対話的に入力・実行するためのツール### 知識
・Rubyでは、`大文字`で始まる変数(例: P, X, Y, Z)は「定数」として扱われる。## メソッド
### `map`メソッド:
配列の各要素に対して何らかの操作を行い、その結果を集めて新しい配列を作成するメソッド
“`ruby
# 基本構文
配列.map { |item| 実行する処理 }# 例:各要素を2倍にした配列を返す
numbers = [1, 2, 3, 4, 5]
doubled_numbers = numbers.map { |n| n * 2 }
# =>
オブジェクトとハッシュを照合するには?flattenメソッドの使用
この記事はプログラミング学習者がアプリ開発中に躓いた内容を備忘録として記事におこしたものです。内容に不備などあればご指摘頂けると助かります。
###### 制作しているクローンアプリの中でControllerで取得したある2つのデータをハッシュとオブジェクトの文字列という形で保存していました。これらのデータを称号する為に調べて実装した内容を掲載します。
## 実装したコードの紹介
“`ruby:tweets_controller.rb
def show
@tweet = Tweet.includes(images_attachments: :blob).find(params[:id])
@comments = @tweet.comments.includes(user: { icon_attachment: :blob }, images_attachments: :blob)
@replies = {}
@comments.each do |comment|
@replies[comment.id] = Comment.whe
yarn install –check-filesをしたらnode-sassが読み込まれないエラー
自分用備忘録として作成
(初心者のため、もし違っていたら教えていただけると幸いです。)課題でクローンしたアプリケーションを立ち上げるためにyarn install –check-filesをしたら、
error /Users/yec2016/workspace/dpro/rails_refactoring_task/node_modules/node-sass: Command failed.とエラーが出た。環境は、
mac
node -v 18.18.0
node-sass -v 4.14.1
yarn -v 1.22.22解決方法としては、node-sassのバージョンに対応できるnodeバージョンまで下げる。(pythonが読み込めないというエラーもあったため、pythonをインストールしたが、意味がなかった。)
#node-sassのバージョン確認
npm list node-sass
football_info_for_refactoring@0.1.0 /Users/xxx/workspace/xxx/rails_refactoring_task
└─┬ @
YAMLの作法
今回は、インターンの中で利用した、ymlについて話していきたいと思います。
# YAML (YAML Ain’t Markup Language)とは?
ymlとは、一言で言えば、
【データを直感的かつ人間が読みやすい形式で記述するためのデータ表現形式】です。
“`
name: John Doe
age: 30
email: john.doe@example.com
“`
:::note info
こんな感じで使う
:::
# 今回どんな時に使ったか
Webサイトの中で用いられている、英語の情報を日本語表記に変換するのに使いました。
例えば、
“`
ja:
hello: “こんにちは”
user:
name: “名前”
email: “メールアドレス”
messages:
welcome: “ようこそ、%{name}さん!”
goodbye: “さようなら!”
“`
これをconfig/locales/ja.ymlに記述します。そしてビューで表示させるには、
“`
<%= I18n.t('hello') %>
<%= I18n.t
Railsでアバター画像が設定されていないときにプロフィール編集ページにリダイレクトする設定方法
## やりたいこと
ユーザー登録後、プロフィール画像を登録していない場合にはプロフィール設定のページに遷移したい
※抽象化すると、特定の条件を満たすとき、特定のページに遷移させたい### 前提
– Railsを使用
– User has_one Profile の関係
– ユーザーがSign upしたタイミングではprofileはつくられない## 課題
– プロフィールは自動で生成されないため、`unless current_user.profile.avatar.attached?`のような条件文だと、.nilクラスのエラーが出る
– application_controllerにプロフィール編集画面へのリダイレクトを記載すると、リダイレクトが繰り返されしまう## 解決策
### 条件文の記載方法
application_controllerに以下を記載。
“`
before_action :check_avatarprivate
def check_avatar
if user_signed_in?
unless current
【Rails】グループ機能の実装手順
この記事では、Railsでグループオーナーが作成したグループに、ユーザーがグループに参加・離脱できるようなグループ作成機能を実装する方法をまとめています。
## 作製するモデルのアソシエーション
今回作成するテーブルは`GroupUser`と`Group`のふたつです。![スクリーンショット 2024-09-14 204259.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882438/2a5cb3bb-4522-1448-b5b0-fb7e73f0735f.png)
### Groupテーブル
グループの情報を保存します(`name`、`introduction`、`image_id`など)。
`owner_id`フィールドにより、グループの所有者(ユーザー)を表します。
### GroupUserテーブル
中間テーブルで、ユーザーがどのグループに所属しているかを管理します。
`user_id`と`group_id`で`User`と`Group`を関連付けています。# 実装手順
## 1