我有一个服务类型表,其中包含几十个服务的ID和名称. 我有一个Projects表,必须有一个Proposed Services列表和一个Accepted Services列表. 我知道我会在两侧使用HABTM,其间有一个project_service_types表
我有一个Projects表,必须有一个Proposed Services列表和一个Accepted Services列表.
我知道我会在两侧使用HABTM,其间有一个project_service_types表.
当我在同一个表之间有两个不同的关系时,我无法弄清楚要做什么.我怀疑它使用:join_table和:associated_forign_key,但我不能让它在我的应用程序中工作.
谢谢.
虽然你可以用habtm来解决这个问题,但你所说的是has_many:through的用例.您想要附加一些信息以及关系.为此,您需要创建一个表示关系的连接模型.最后,您可以将服务提案视为域中的一流“事物”.接受服务后,您只需更改状态即可.这也节省了连接.
移民
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