Я обычно использую has_many и затем через, но концепция та же. Вам нужно включить ассоциацию в поиск, чтобы либо
Service.find( :all, :include => :staffs, :conditions => "staffs.id = #{staff_id}" )
Это выполнит внешнее объединение, поэтому будет включать все службы и будет загружать данные персонала.
Service.find( :all, :joins => :staffs, :conditions => "staffs.id = #{staff_id}" )
Это выполнит внутреннее соединение и будет иметь только наборы служебных данных (он должен будет перейти в базу данных, если вы вызовете service.staffs
для получения незапрошенного совета, я рекомендую немного изменить ваш запрос.
Service.all(:include => :staffs, :conditions => ["staffs.id = ?", staff_id])
Массив экранирует переменную staff_id
, чтобы помочь предотвратить атаки вредоносного кода.