- 1. この記事でわかること
- 2. テスト
- 2.1. 何をテストするか
- 2.2. 有効性のテスト
- 2.2.1. マイグレーションを自作する
- 2.2.2. [Rails,Javascript]モーダルウィンドウの実装
- 2.2.3. [Rails,Javascript]RailsのviewでJavaScriptを用いて一定時間後に指定したページへ飛ぶ
- 2.2.4. 【Rails】相互フォロー同士のDM機能(非同期通信)
- 2.2.5. Railsでテーブル作成時にカラムの順番を指定する
- 2.2.6. ActionDispatch::Request::Session::DisabledSessionError: Your application has sessions disabled. To write to the session you must first configure a session storeが発生した時の対処法
- 2.2.7. bundle exec rails db:create できない
- 2.2.8. Rails データベース作成 モデルの基本操作
- 3. この記事でわかること
- 4. モデルを作成する
- 5. User Name: Foo
ActiveRecordっぽくFirestoreを操作できるgemを作りました(ActAsFireRecordBeta)
## はじめに
ActiveRecordっぽくFirestoreを操作できるgemを作りました。https://github.com/JunichiIto/act_as_fire_record_beta
## 概要
こんなモデルを定義します。
“`ruby
class Book
include ActAsFireRecordBeta# 属性の名前と型を定義
firestore_attribute :title, :string
firestore_attribute :published_on, :date
firestore_attribute :page, :integer
end
“`CRUDする例です。
“`ruby
# Create
book = Book.new(title: ‘An Awesome Book’, published_on: ‘2022-12-01’.to_date, page: 200)
book.save
bool.id #=> IdG0ZWT0I5DucEQuRgoP# Read
id = ‘IdG
Ruby on Railsでプルダウン検索機能を実装する(gem不使用)
—
こんにちは。GeekSalonのプログラミング駆け出しメンターです。
今日はgem(ransack)を使用せずに実装できるプルダウン検索機能についての記事を書こうと思います。
初めて記事を書くので、温かい目で見てくださると嬉しいです。# 目次
①前提
②開発概要
③実際のコード## 前提
○開発環境
Ruby 3.0.4
Rails 6.1.6○前提
・ ListでのCRUD機能実装済み
・ 新規投稿ページでプルダウン機能を実装## 開発概要
①投稿時にプルダウンで選択した情報を、変数を使って検索をプルダウン式でかける。
②検索用のparamsをコントローラーで作成
・検索したいカラムの選択項目を検索バーにも作成する
③コントローラーで検索した結果だけを表示する変数を作る
・ビューに表示実装イメージはこちら
ー投稿一覧ページー
![スクリーンショット 2022-12-27 15.19.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.co
【Rails】なぜcountよりもsizeを使うべきなのか?〜lengthの動きも一緒に確認〜
## 1. はじめに
パフォーマンス向上を考える時、“count“より“size“を使おうという話はよく耳にする。
「“size“だとクエリを毎回発行しないから良いんでしょ」くらいのことは知っていても、実際それぞれのメソッドがどんな挙動をしていて、どう使い分けたら良いかあまり意識せずなんとなくで使っている人は多いのではないだろうかこの記事では実際に3つのメソッドの動きを確認し、「なぜ“count“よりも“size“を使うべき」と言われているのか、また同時にどういう場合にどのメソッドを使ったら良いのかを考えてみたい
## 2. countメソッド
– SQLのCOUNTを使う
– キャッシュの有無に関係なく、毎回クエリを発行する
[GitHub](https://github.com/rails/rails/blob/984c3ef2775781d47efa9f541ce570daa2434a80/activerecord/lib/active_record/relation/calculations.rb#L43-L53)“`console:conso
[Rails,slick,JavaScript]slickを用いたスライドショーの作成
チーム開発で活用した技術をアウトプット投稿
## 目的
slickを用いて下記のようなスライドショーの作成
![スライドショー.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2950107/d04e514b-4731-1ede-58f0-43def9ce7727.gif)## 開発環境
– Ruby 3.1.2
– Rails 6.1.7
– bootstrap併用## 実装手順
### 1.slickの導入
今回はCDNを用いて実装https://kenwheeler.github.io/slick/
公式HPのヘッダー`get it now`をクリックし
`View On Github`からgithubに移動し、`README`にある以下3つをコピー
“`
Rails モデルのテストコードについて[備忘録]
今回はモデルのテストについて書いていこうと思います。
この記事でわかること
- Railsのモデルをテストする方法について。
- ユーザ名、emailに関してテストするべきことについて。
テスト
何をテストするか
今回は、ユーザ名、emailのレコードをデータベースに保存する際に検証する必要がある以下の項目についてのテストを書いていこうと思います。
- 有効性
- 存在性
- 無効性
- 一意性
有効性のテスト
rails generateコマンドで生成されたファイルに、user.rb, user_test.rbがあります。それぞれ最初は以下のようになっています。
“`Ruby:app/models/user.rb
class User < ApplicationRecord end ``` ```Ruby:test/models/user_test.rb require '
マイグレーションを自作する
# カラムを編集する indexにする
“`rb
create_table :users do |t|
t.string :name, index: true
t.string :email, index: { unique: true, name: ‘unique_emails’ }
end
“`
# 編集したものをまた編集したいときはどうすればいいのか?
“`
bin/rails g migration ChangeNameOnProducts
“`
もう一度このカラムについて編集したくなった。
“`
************@mbp ********** % bin/rails g migration ChangeNameOnProducts
invoke active_record
conflict db/migrate/20221227074540_change_name_on_products.rb
Another migration is already named change_name_on_products: /Us
[Rails,Javascript]モーダルウィンドウの実装
チーム開発で活用しようと思った技術をアウトプット投稿
## 目的
以下のようなモーダルウィンドウの実装
商品の写真をクリックすると以下のように表示、背景の黒い部分をクリックすると戻る
![スクリーンショット.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2950107/b51c11a5-777b-d3f4-a5ff-cc91f28a67c4.png)## 開発環境
– Ruby 3.1.2
– Rails 6.1.7
– bootstrap併用(bootstrap自体は実装機能と関係なし)## 実装手順
### 1.モーダルの設置
モーダルを表示させたいページに以下の記述を行う
例)`index`ページに`show`ページの内容を表示したい場合は`index`に記述
“`(例)index.html.erb“`
### 2.CSSの設定
[Rails,Javascript]RailsのviewでJavaScriptを用いて一定時間後に指定したページへ飛ぶ
チーム開発で活用した技術アウトプット投稿
## 目的
– 特定ページを訪れた際、一定時間後指定したページへリダイレクトする## 開発環境
– Ruby 3.1.2
– Rails 6.1.7## 基本的な書き方
指定したいページに下記`script`を記述“`.js
“`
– `action`内の`window.location.href = ‘URL’;`で遷移先を指定
– `time`内の5*1000で秒数を指定(ミリ秒で指定する。1000 = 1秒)
– `setTimeout`で`time`に指定した時間経過後に`action`を実行## 問題点
この記述をしたページから違うページに飛んだ場合でも実行されてしまう
※指摘してくれたチームメイトに感謝例)Aboutページに指定している、指定
【Rails】相互フォロー同士のDM機能(非同期通信)
## 初めに
私は普段、適当にプログラミングを勉強している@takakouと申します。今回作成した「相互フォロー同士の「DM機能(非同期通信)」は自分のアプリに、相互フォローをしているユーザ同士の1対1のDM機能を実装したい方向けです。色々DM機能の作成方法について記事を漁ってみたのですが、相互フォローしているユーザ同士の1対1のDM機能に特化した記事が少ないと感じたため、今回の記事の執筆に至りました。## 前提
フォロー・フォロワー機能が実装されているという前提のもと今回の記事を執筆していきます。前提としての機能が完成していない場合は下記の@Hbk__17さんの執筆された記事を参考にしていただき、フォロー・フォロワーの機能を実装していただくことを推奨いたします。
https://qiita.com/Hbk__17/items/a6b96009154542d04269
## 動作環境
・PC : **MacBook Air(M1,2020)**
・RAM : **8GB**
・OS : **macOS Monterey(ver12.1)**
・Ruby : **3.1.
Railsでテーブル作成時にカラムの順番を指定する
## やりたいこと
MySQLの場合です。
SQLiteでもできるかも?(未検証)
PostgreSQLは少し面倒そう?https://wiki.postgresql.org/wiki/Alter_column_position/jaUserテーブル作成時に`deleted_at`等のカラムを作りたいとします。
作成後のschemaでは以下のように`updated_at`の後ろになって欲しい場合に、どうすれば良いか。“`ruby
create_table “users”, force: :cascade do |t|
t.string “email”, limit: 255
t.string “name”, limit: 255
t.datetime “created_at”, null: false
t.datetime “updated_at”, null: false
t.datetime “deleted_at” # updated_atの後ろ
end
“`普通に作ると
ActionDispatch::Request::Session::DisabledSessionError: Your application has sessions disabled. To write to the session you must first configure a session storeが発生した時の対処法
# 概要
– ruby 3.1.2
– rails 7.0.4
– railsはAPIモードで利用
# 結論
config/application.rbに以下の3行を追記すれば解決する。
“`config/applicaton.rb
config.session_store :cookie_store, key: ‘_interslice_session’
config.middleware.use ActionDispatch::Cookies
config.middleware.use config.session_store, config.session_options
“`
参考になれば幸いです。
# 参考文献
– [Rails 7.0.1 with disabled Sessionstore ctionDispatch::Request::Session::DisabledSessionError (Your application has sessions disabled. To write to the session you must first configu
bundle exec rails db:create できない
% brew services restart postgresql
してみよう
Rails データベース作成 モデルの基本操作
この記事でわかること
・Railsモデルの基本操作について。
モデルを作成する
まずは、モデルを以下のコマンドで作成します。
“`Bash:console
rails generate model<データ名:データ型> <データ名:データ型>
rails generate model User name:string email:string
“`すると以下のようなコードが表示されます。
“`Bash:console
invoke active_record
create db/migrate/20221226012605_create_users.rb
create app/models/user.rb
invoke test_unit
create test/models/user_test.rb
create test/fixtures
[続] Rails Consoleなど任意の場所、Inlineで任意のViewを任意条件でRenderする
# TL;DR
“`ruby
ac = ApplicationController.new
ac.instance_variable_set(:@user, User.find(42)) # インスタンス変数をインジェクション
ac.render_to_string ‘users/show’, # レンダリングしたいテンプレート
layout: false, # `layout: false`がないとエラー
locals: { params: {} } # ローカル変数が使われる際、セットが必要=> “\n\n
\n\nUser ID: 42 \n\n\n\nUser Name: Foo
\n\n\n”
“`# 本文
去年はとある問題を解決するために、**[「Rails
Google Analytics 4 のイベントをサーバー側から送信する方法を調べてみた
## はじめに
Google Analytics 4 のページビューやイベントを仕込む際は、クライアント側(View)に仕込むのが多いとは思いますが、サーバー側からイベントを送る必要が出てきたため、その方法についてまとめています。
※「Ruby on Rails」の環境で調査していたので、言語はRubyにて試しています。
## プロパティおよびデータストリームを準備する
こちらに関しましては、細かく説明してしまうと長くなってしまうので、公式のドキュメントへの参照のみとします。
(検索で色々とわかりやすい記事が出てくると思います)– プロパティ設定
– https://support.google.com/analytics/answer/9304153?hl=ja&ref_topic=9303319
– データストリームに関しては、今回はウェブで進めていきます。## 測定IDを確認する
先ほど作成したデータストリームから測定IDが確認できるので、そちらを保存しておきます。
– テータストリーム画面から作成した項目を押下します
Module#concerningとは
## はじめに
[Ateam Group U-30 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/ateam-group-u30)の18日目は、 @mayobimu が担当します!https://qiita.com/advent-calendar/2022/ateam-group-u30
## Module#concerningとは
Rails 4.1.0で追加された機能
Rails 4.0で追加されたActiveSupport::Concernをより使い方の幅を広めることができる## 何が変わったの?
### ActiveSupport::Concernの場合– `app/models/concerns/`or`app/controllers/concerns/`からincludeする必要がある
https://qiita.com/mayobimu/items/e05a8f9d496200a0c3ec
### Module#concerningの場合
– 同じmodelsファイルから
rails db:migrateのエラーについて(StandardError: An error has occurred, all later migrations canceled:)
## はじめに
エラーの対処法メモ。“`
== 20221226020652 DeviseCreateUsers: migrating ================================
— create_table(:users)
rails aborted!
StandardError: An error has occurred, all later migrations canceled:
以下、続く
“`
この記述はエラーが出たのでマイグレーションをキャンセルしたという記述。
この後の記述でエラーの詳細を見ます。
## 原因
“`
略
Mysql2::Error: Invalid default value for ‘hoge’
略
ActiveRecord::StatementInvalid: Mysql2::Error: Invalid default value for ‘hoge’
略
Mysql2::Error: Invalid default
【Rails】コメント削除ボタンをコメントしたユーザーのみ表示させるには。
# はじめに
プログラミング初学者の者です。オンラインでプログラミングを学習させて頂いてるのですが、さらに理解を深めていきたいと思い、学習したことを備忘録として、残して理解を深めていきたいと思います。
また、間違った点など、ありましたら、ご指摘いただけると幸いです。よろしくお願いします。# コメント削除ボタンをコメントしたユーザーのみ表示させるには。
現状下記の状態では全ユーザーに削除ボタンが現れてしまい、削除できる状態でした。
“`app/views/recipes/show.html.erb<% @comments.each do |comment| %>関連する記事
OTHERカテゴリの最新記事
- 2024.09.20
JAVA関連のことを調べてみた
- 2024.09.20
iOS関連のことを調べてみた
- 2024.09.20
JavaScript関連のことを調べてみた
- 2024.09.20
Rails関連のことを調べてみた
- 2024.09.20
Python関連のことを調べてみた
- 2024.09.20
Lambda関連のことを調べてみた
<%= comment.content %>
<%=link_
GitLab開発依存ライブラリからthin gemを排除した
2022年の振り返り@Rails Girls