J'ai un modèle de pays et un modèle de lieux - un pays has_many
places, et un lieu belongs_to
un pays. Un modèle de lieu également has_many
postes (dont belong_to
une place). Je voudrais agréger tous les messages provenant d'endroits appartenant à un pays donné dans un flux - plutôt comme un flux d'activité d'un ami sur un site de réseau social. J'ai un peu de mal à trouver la bonne recherche à faire, toute aide serait grandement appréciée! En ce moment j'ai:Mise en place d'un flux avec Rails
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
Ensuite, dans le dossier du pays:
<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 %>
Cela va sans aucune erreur, mais donne un flux de tous les messages, plutôt que de sélectionner les messages pour ce pays particulier. Quelle est la meilleure façon de faire fonctionner ça? Je soupçonne que je pourrais trop compliquer les choses ... merci d'avance!
d'oh! wow je suis rouillée ... merci! Je suis un peu perplexe à propos de cette erreur de syntaxe maintenant vous le mentionnez ... – Budgie