Ich baue eine öffentliche Tätigkeit Strom, der einen Strom von der folgenden enthält:Rails 3 eifrig Laden von tief verschachtelten Vereinigung
- Benutzer vor 3 Minuten geschrieben
- Benutzer spielte einen Beitrag
Ich benutze dafür den Edelstein public_activity.
Meine Frage ist, ob es eine Möglichkeit gibt, die includes
für eine polymorphe Funktion zu verwenden.
Der Code, den ich zur Zeit läuft wie folgt:
#app/models/post.rb
class Post < ActiveRecord::Base
include PublicActivity::Common
attr_accessible :content, :visibility
validates_presence_of :content
belongs_to :postable, :polymorphic => true
has_many :stars
end
#app/models/star.rb
class Star < ActiveRecord::Base
include PublicActivity::Common
validate :duplicate_star
belongs_to :user
belongs_to :post
private
def duplicate_star
errors.add(:base, "Post already starred") if Star.exists?(:user_id => self.user, :post_id => self.post)
end
end
#app/controllers/users_controller.rb
class UsersController < ApplicationController
def index
@post = Post.new
@activities = PublicActivity::Activity.order("id desc").all.includes(:trackable, :owner)
end
end
Der verfolgbare ein Beitrag oder ein Stern sein kann. Ich habe Render-Funktionen für die Anzeige von beiden. Das Problem ist, wenn ich die Ausgabe etwas wie {user} try {Lieblings postcontent}, tut es es so aus:
activity.trackable.post.content
So führt dies in mehreren Abfragen, jedes Mal, wenn eine Stelle findet. Wie gehe ich dieses Problem/Situation an?
Vielen Dank im Voraus.
Das verfolgbare Objekt kann auch einen anderen polymorphen Klassentyp enthalten, der keinen a: content als Attribut haben darf. – swaroopsm