Прежде всего, спасибо всем, кто нашел время, чтобы прочитать этот пост. Большое, большое спасибо заранее.
Я пытаюсь выяснить, как получить все уникальные имена местоположений, которые могут быть у поставщика.
Моя первая идея состояла в том, чтобы написать метод в модели Provider, который будет перебирать все курсы, а затем их появление и возвращать список уникальных местоположений.
Я просмотрел метод .uniq в Rails API, но безуспешно.
Вот как выглядят мои разные модели/ассоциации:
модели /provider.rb
class Provider < ActiveRecord::Base
has_many :courses
has_many :teachers
end
модели/курс.рб
class Course < ActiveRecord::Base
has_many :occurrences, :dependent => :destroy
belongs_to :provider
end
модели/вхождение.рб
class Occurrence < ActiveRecord::Base
belongs_to :course
belongs_to :location
end
модели/местоположение.рб
class Location < ActiveRecord::Base
attr_accessible :name
has_many :occurrences
end
Каков наилучший способ добиться этого?
Прочитав комментарии, я попробовал это:
Я создал метод unique_locations в модели Provider, он имеет следующий код (на основе вашего ответа)
def unique_locations
Location.joins(occurrences: :course).where(courses: { provider_id: self.id }).uniq.pluck('locations.name')
end`
и используя его, на мой взгляд:
<% @provider.unique_locations.each do |l| %>
<%= l %><br>
<% end %>`
Но я все еще получаю неуникальные результаты. Любые идеи?
.uniq
не работает? - person Kleber S.   schedule 07.02.2013