は、何を話していることにhas_manyのためのユースケースです。あなたは関係と一緒に少しの情報を添付したいと思います。これを行うには、関係を表す結合モデルを作成します。
これにより、サービス提案をドメイン内のファーストクラスの「もの」として扱うことができます。サービスが承認されると、ステータスを変更することができます。これにより、結合も保存されます。
移行
create_table :project_services do |t|
t.references :project
t.references :service_type
t.string :status
end
それはトリックを行いますように見えるモデル
class ProjectService < ActiveRecord::Base
belongs_to :project
belongs_to :service
end
class Project < ActiveRecord::Base
has_many :project_services
has_many :accepted_services, :through => :project_services,
:conditions => { :status => 'accepted' }
has_many :proposed_services, :through => :proposed_services,
:conditions => { :status => 'proposed' }
end
class Service < ActiveRecord::Base
has_many :project_services
has_many :accepted_projects, :through => :project_services,
:conditions => { :status => 'accepted' }
has_many :proposed_projects, :through => :proposed_services,
:conditions => { :status => 'proposed' }
end
。 (ProjectsProposedTypesモデルのメモフィールドなどの)関連付け自体にデータを置いておきたい場合は、私の答えにhas_many:throughオプションを記述したほうがよいでしょう。プロジェクトに幸運を祈る! –