У меня есть модель страны и модель мест - страна has_many
мест и место belongs_to
страны.Модель места также has_many
сообщения (которые belong_to
место).Я хотел бы объединить все сообщения из мест, принадлежащих определенной стране, в канал - скорее как канал активности друзей на сайте социальной сети.У меня возникли проблемы с поиском подходящего поиска, любая помощь будет высоко оценена!На данный момент у меня есть:
country.rb
has_many :places
has_many :posts, :through => :places
def country_feed
Post.from_places_belonging_to(self)
end
post.rb
belongs_to :place
scope :from_places_belonging_to, lambda { |country| belonging_to(country) }
private
def self.belonging_to(country)
place_ids = %(SELECT place_id FROM places WHERE country_id = :country_id)
where("place_id IN (#{place_ids})", { :country_id => country })
end
end
Тогда в стране файл show.html.erb:
<h3>Posts</h3>
<% @country.country_feed.each do |post| %>
<%= link_to "#{post.user.username}", profile_path(post.user_id) %> posted on <%=link_to "#{post.place.name}", place_path(post.place_id) %> <%= time_ago_in_words post.created_at %> ago:
<%= simple_format post.content %>
<% end %>
Это работает без каких-либо ошибок, но дает поток всех сообщений, а не выбор сообщений для этой конкретной страны.Какой лучший способ заставить это работать?У меня есть скрытое подозрение, что я могу быть слишком сложным делом ... заранее спасибо!