加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – HABTM 2表2种不同的关系

发布时间:2020-12-17 01:44:00 所属栏目:百科 来源:网络整理
导读:我有一个服务类型表,其中包含几十个服务的ID和名称. 我有一个Projects表,必须有一个Proposed Services列表和一个Accepted Services列表. 我知道我会在两侧使用HABTM,其间有一个project_service_types表. 当我在同一个表之间有两个不同的关系时,我无法弄清楚
我有一个服务类型表,其中包含几十个服务的ID和名称.

我有一个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,:conditions => { :status => 'accepted' }
  has_many :proposed_projects,:conditions => { :status => 'proposed' }
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读