Rails Ассоциации - использование данных в таблице ассоциаций - PullRequest
1 голос
/ 21 июня 2011

У меня есть вопрос об ассоциациях в 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

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...