タイプが固定セットであることが確実な場合は、Project
モデルに数値定数を定義し、これらの数値をテーブルの列に格納することができますprojects
。
ここでは、rjzが言ったように問題を引き起こす名前category_id
を使用しないように列を呼び出す例(もちろんテストされていません):type
class Project < ActiveRecord::Base
# Project categories are constants
CHEAP_PROJECT = 1
SOUND_PROJECT = 2
GRAPHIC_PROJECT = 3
SECRET_PROJECT = 4
# Force project_category_id to be a valid category identifier
validates :category_id, :inclusion => {:in => 1..4}
# At this point you can use the constants
# Here an example of a scope to get the secret projects
scope :secret_projects, where(:category_id => SECRET_PROJECT)
end
category_id
値が定義した値であることを必ず検証してください。これらのコンスタンスを取得したら、のようなものを使用して他の場所から使用することもできますProject::SOUND_PROJECT
。
解決策はかなり明確だと思いますが、要件が変更された場合(常に変更されます...)、モデルを作成し、これらの識別子を維持しながらこれらのプロジェクトカテゴリを挿入する必要があります。