我对Rails 2.3.11中的关联有疑问
我有两种模式:
他们有has_and_belongs_to_many
的关系。但他们也有一个重要的每活动组织relationship type
。它们通过activities_organisations
表连接在一起,该表有三列:
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
谢谢!