何よりもまず、時間を割いてこの投稿を読んでくれた皆さんに感謝します。よろしくお願いします。
プロバイダーが持つ可能性のあるすべての一意の場所の名前を取得する方法を見つけようとしています。
私の最初のアイデアは、すべてのコースを反復処理してから発生し、一意の場所のリストを返すプロバイダー モデルのメソッドを作成することでした。
Rails apiの.uniqメソッドを見てきましたが、うまくいきませんでした。
私のさまざまなモデル/関連付けは次のようになります。
models/provider.rb
class Provider < ActiveRecord::Base
has_many :courses
has_many :teachers
end
models/course.rb
class Course < ActiveRecord::Base
has_many :occurrences, :dependent => :destroy
belongs_to :provider
end
models/occurrence.rb
class Occurrence < ActiveRecord::Base
belongs_to :course
belongs_to :location
end
models/location.rb
class Location < ActiveRecord::Base
attr_accessible :name
has_many :occurrences
end
これを達成する最善の方法は何ですか?
コメントを読んだ後、私はこれを試しました:
Provider モデルに unique_locations メソッドを作成しました。次のコードがあります (回答に基づいて)
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 %>`
しかし、私はまだユニークではない結果を得ています。何か案は?