У меня есть вопрос об ассоциациях в Rails 2.3.11
У меня есть две модели:
у них есть отношения has_and_belongs_to_many
.Но у них также есть важная организация для каждой деятельности relationship type
.Они соединены вместе через таблицу activities_organisations
, которая имеет три столбца:
- код_ действия
- идентификатор_организации
- rel_type
rel_type
можно установить как 1
(финансирование), 2
(расширение) или 3
(внедрение).
Ассоциация работает нормально, и я могу позвонить @activity.organisations
или @organisation.activities
.Но я также хотел бы назвать это в зависимости от rel_type
- так что я могу, например, позвонить only организации-исполнителю деятельности (где 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 %>
Я нашел это , но я застрял, пытаясь включить его в свои модели, и я не уверен, насколько это применимо.
Был бы чрезвычайно признателен за любую помощь!
Спасибо,
Отметка
Обновление:
Благодаря @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
Спасибо!