DHH/37signals流のRails実装パターン。コード実装時にClaudeが自動的に参照。サービスオブジェクト不使用、RESTfulコントローラー、Concernsによる分割。
このスキルはClaudeがコード実装時に自動的に参照するバックグラウンドナレッジです。
"Vanilla Rails is plenty" — Railsの標準機能を最大限活用し、外部依存を最小化する。
ビジネスロジックはモデルメソッドに配置。複雑になったらConcernsで分割。
# BAD
CloseCardService.new(card, user: current_user).call
# GOOD
card.close(user: current_user)
index, show, new, create, edit, update,
destroyカスタムアクション → 新しいコントローラー
# BAD
resources :posts do
member { post :publish }
end
# GOOD
resources :posts do
resource :publication, only: [:create, :destroy]
end
class Post < ApplicationRecord
include Taggable # タグ関連のすべて
include Publishable # 公開関連のすべて
include Trashable # ゴミ箱関連のすべて
end
各Concernに関連付け、スコープ、コールバック、メソッドをまとめる。
| 使わない | 代わりに使う |
|---|---|
| Service Objects | モデルメソッド + Concerns |
| Query Objects | スコープ |
| Form Objects | モデル + accepts_nested_attributes |
| Decorator/Presenter | ヘルパーメソッド |
# マイグレーション
add_column :posts, :title, :string, null: false, comment: 'タイトル'
# モデル(ユーザー向けエラーメッセージが必要な場合のみ)
validates :title, presence: true
allow_any_instance_of を避ける