Ruby on rails Rails关联-使用关联表上的数据

Ruby on rails Rails关联-使用关联表上的数据,ruby-on-rails,Ruby On Rails,我有一个关于Rails 2.3.11中的关联的问题 我有两种型号: 活动 组织机构 他们有一个has\u和\u属于\u many关系。但他们也有一个重要的、按活动划分的组织关系类型。它们通过活动\u组织表连接在一起,该表有三列: 活动标识 机构识别号 关系型 rel\u类型可以设置为1(资金)、2(扩展)或3(实施) 协会运作良好,我可以调用@activity.organizations或@organization.activities。但我也希望根据rel\u类型,调用它,这样我就可以

我有一个关于Rails 2.3.11中的关联的问题

我有两种型号:

  • 活动
  • 组织机构
他们有一个
has\u和\u属于\u many
关系。但他们也有一个重要的、按活动划分的组织
关系类型
。它们通过
活动\u组织
表连接在一起,该表有三列:

  • 活动标识
  • 机构识别号
  • 关系型
rel\u类型可以设置为
1
(资金)、
2
(扩展)或
3
(实施)

协会运作良好,我可以调用
@activity.organizations
@organization.activities
。但我也希望根据
rel\u类型
,调用它,这样我就可以仅调用活动的实施组织(其中
rel\u类型==3

目前我有这个(在组织/索引视图上),但我认为一定有更好的方法

<%
 @conditions = {}
 @conditions[:organisation_id] = organisation.id
 @reltype = ActivitiesOrganisation.all(:conditions=>@conditions, :group=>:rel_type)%>

<td><% @reltype.each do |r| %><%= r.rel_type %><% end %></td>
  </tr>
<% end %>
<% end %>
@conditions,:group=>:rel\u type)%>
但我在尝试将其包括在模型中时遇到了困难,我不确定其中有多少适用

非常感谢您的帮助

谢谢,
标记

更新:

多亏了评论中的@ghoppe,我才意识到自己有点傻。。。这是我现在的代码:

活动模型

class Activity < ActiveRecord::Base  
  has_many :activity_organisations
  has_many :funding_activity_organisations, :class_name => "ActivitiesOrganisation", 
              :conditions => {:rel_type => 1}
  has_many :extending_activity_organisations, :class_name => "ActivitiesOrganisation", 
              :conditions => {:rel_type => 2}
  has_many :implementing_activity_organisations, :class_name => "ActivitiesOrganisation", 
              :conditions => {:rel_type => 3}
  has_many :organisations,       :through => :activity_organisations
  has_many :funding_organisations,  :through => :funding_activity_organisations, :source => :organisation
  has_many :extending_organisations,:through => :extending_activity_organisations,:source => :organisation
  has_many :implementing_organisations,:through => :implementing_activity_organisations,:source => :organisation

end
class ActivitiesOrganisation < ActiveRecord::Base

  belongs_to :activity
  belongs_to :organisation

end
类活动“活动组织”,
:conditions=>{:rel_type=>1}
有很多:扩展活动组织,:class\u name=>“活动组织”,
:条件=>{:rel_type=>2}
拥有多个:实施活动组织,:class\u name=>“活动组织”,
:conditions=>{:rel_type=>3}
拥有多个:组织,:通过=>:活动\u组织
有很多:资助组织,:通过=>:资助活动组织,:来源=>:组织
有许多:扩展组织:通过=>:扩展活动组织:来源=>:组织
有很多:实施组织,通过=>:实施活动组织,来源=>:组织
终止
活动组织模式

class Activity < ActiveRecord::Base  
  has_many :activity_organisations
  has_many :funding_activity_organisations, :class_name => "ActivitiesOrganisation", 
              :conditions => {:rel_type => 1}
  has_many :extending_activity_organisations, :class_name => "ActivitiesOrganisation", 
              :conditions => {:rel_type => 2}
  has_many :implementing_activity_organisations, :class_name => "ActivitiesOrganisation", 
              :conditions => {:rel_type => 3}
  has_many :organisations,       :through => :activity_organisations
  has_many :funding_organisations,  :through => :funding_activity_organisations, :source => :organisation
  has_many :extending_organisations,:through => :extending_activity_organisations,:source => :organisation
  has_many :implementing_organisations,:through => :implementing_activity_organisations,:source => :organisation

end
class ActivitiesOrganisation < ActiveRecord::Base

  belongs_to :activity
  belongs_to :organisation

end
类活动组织

谢谢

您找到的问题正好实现了您想要的关系。只需将
阅读用户文章
更改为
资助组织
关注用户文章
更改为
扩展组织
:模式
更改为
:rel\u类型
添加第三个
实施组织
,并更改其余部分以匹配您的结构…