sontixyou blog

技術まわり、ガジェット関連について

Rails table_name_prefixメソッドについて

背景

Railsにmatch_resultsというテーブルを追加したいとする。 Railsのモデル ディレクトリの構造をmodels/match/result.rbにしたい。

実際どうやるのか

そういうときは、以下のコマンドを実行すればよい。

bundle exec rails generate Match::Result score:integer

これを実行すると、以下のようなモデルファイルが作成されます。models直下に作成されるmatch.rbファイルのおかげで、result.rbは、このディレクトリ構造を利用することができます。

models/match/result.rb

module Match
  class Result < ApplicationRecord
  end
end

models/match.rb

module Match
  def self.table_name_prefix
    "match_"
  end
end

以下のコードを実行すると、match_resultsテーブルからレコードを取得することができます。

::Match::Result.all