Rails关联 - 使用关联表上的数据

时间:2011-06-21 13:50:13

标签: ruby-on-rails

我对Rails 2.3.11中的关联有疑问

我有两种模式:

  • 活动
  • 组织

他们有has_and_belongs_to_many的关系。但他们也有一个重要的每活动组织relationship type。它们通过activities_organisations表连接在一起,该表有三列:

  • ACTIVITY_ID
  • organisation_id
  • rel_type

rel_type可以设置为1(资金),2(扩展)或3(实施)。

该关联正常,我可以致电@activity.organisations@organisation.activities。但我也想根据rel_type来调用它 - 以便我可以例如只调用 一个活动的实施组织(其中rel_type == 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 %>

found this但我试图将其包含在我的模型中时遇到困难,而且我不确定它有多少适用。

非常感谢任何帮助!

谢谢,
标记

更新

感谢评论中的@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

谢谢!

0 个答案:

没有答案