0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

命名規約を上書きする

Posted at

命名規約を上書きする

Railsアプリケーションで別の命名規約を使わなければならない場合や、レガシーデータベースを用いてRailsアプリケーションを作成しないといけない場合は、デフォルトの命名規約を手軽にオーバーライドできます。

テーブル名を変更

ApplicationRecordは、有用なメソッドが多数定義されているActiveRecord::Baseを継承しているので、使うべきテーブル名をActiveRecord::Base.table_name=メソッドで明示的に指定できます。

class Book < ApplicationRecord
  self.table_name = "my_books"
end
irb(main):001:0> Book.table_name
=> "my_books"
class Book < ApplicationRecord

end
*********@******** % rails c --sandbox
....
irb(main):001:0> Book.table_name
=> "books"

テスト用のテーブル、カラム名も上書きできる

テーブル名をこのように上書き指定する場合は、テストの定義でset_fixture_classメソッドを使い、フィクスチャ(my_books.yml)に対応するクラス名を別途定義しておく必要があります。

# test/models/book_test.rb
class BookTest < ActiveSupport::TestCase
  set_fixture_class my_books: Book
  fixtures :my_books
  # ...
end

ActiveRecord::Base.primary_key=メソッドを用いて、テーブルの主キーに使われるカラム名を上書きすることもできます。

class Book < ApplicationRecord
  self.primary_key = "book_id"
end

感想

テーブルの名前を変えられることは知らなかった。
レガシーデータベースとはなんだろうか?

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?