1
0

初学者のためのRailsの豆知識

Posted at

Railsのあまり知られていない豆知識

Railsは初心者にも使いやすいフレームワークですが、少し掘り下げると便利な機能がたくさんあります。今回は、Railsのあまり知られていない豆知識をいくつか紹介します。これらの機能を使うことで、より効率的に開発が進むでしょう。

1. find_byメソッド

find_byメソッドを使うと、特定の条件に一致する最初のレコードを簡単に取得できます。

# IDが1のユーザーを取得
user = User.find_by(id: 1)

# emailが特定の値のユーザーを取得
user = User.find_by(email: "example@example.com")

find_byメソッドは見つからない場合にnilを返すので、例外が発生することなく安全に使えます。

2. updateメソッド

updateメソッドを使うと、一度に複数の属性を更新できます。

user = User.find_by(id: 1)
if user.update(name: "New Name", email: "newemail@example.com")
  puts "ユーザー情報が更新されました"
else
  puts "更新に失敗しました"
end

これにより、一度に複数のフィールドを簡単に更新でき、更新が成功したかどうかも確認できます。

3. destroy_allメソッド

destroy_allメソッドを使うと、特定の条件に一致する全てのレコードを一度に削除できます。

# 全ての非アクティブユーザーを削除
User.where(active: false).destroy_all

destroy_allメソッドを使うことで、不要なデータを一括で削除できます。

4. scopeメソッド

scopeメソッドを使うと、モデルに簡単なクエリを定義できます。

class User < ApplicationRecord
  scope :active, -> { where(active: true) }
end

# アクティブなユーザーを取得
active_users = User.active

scopeを使うことで、繰り返し使うクエリを簡単に再利用できます。

5. time_ago_in_wordsメソッド

time_ago_in_wordsメソッドを使うと、ある日時から現在までの経過時間をわかりやすい言葉で表示できます。

<%= time_ago_in_words(@user.created_at) %> ago

このメソッドを使うことで、「3日前」や「2時間前」などの表現を簡単に表示できます。

6. ActiveHashの活用

ActiveHashを使うと、データベースを使用せずにモデルのような振る舞いをするクラスを定義できます。これは、マスターデータや変更頻度の低いデータを扱う場合に便利です。

インストール

まず、ActiveHashをGemfileに追加し、インストールします。

gem 'active_hash'

使用例

例えば、都道府県データをActiveHashで管理する場合を考えます。

# app/models/prefecture.rb
class Prefecture < ActiveHash::Base
  self.data = [
    { id: 1, name: '北海道' }, { id: 2, name: '青森県' }, 
    # 他の都道府県も同様に追加
  ]
end

モデルでの利用

これを他のモデルで利用する方法です。

# app/models/user.rb
class User < ApplicationRecord
  extend ActiveHash::Associations::ActiveRecordExtensions
  belongs_to_active_hash :prefecture
end

フォームでの利用

フォームで都道府県を選択する場合の例です。

<%= form_with(model: @user) do |f| %>
  <%= f.label :prefecture_id, "都道府県" %>
  <%= f.collection_select :prefecture_id, Prefecture.all, :id, :name %>
  <%= f.submit "登録" %>
<% end %>

以上が、初学者向けのRails豆知識の紹介です。これらの機能を使って、より便利で効率的なRails開発を一緒に楽しみましょう!


1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0