Tôi đang xây dựng một dòng hoạt động công cộng, trong đó có một dòng suối trong các cách sau:Rails 3 bốc háo hức của sâu hiệp hội lồng nhau
- tài posted 3 phút trước
- tài đóng vai một bài
Tôi đang sử dụng đá quý public_activity để đạt được điều này.
Câu hỏi của tôi là liệu có cách nào để sử dụng includes
cho chức năng polymorpic hay không.
Mã mà tôi hiện đang chạy như sau:
#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
Các theo dõi được có thể là một đường bưu điện hoặc một ngôi sao. Tôi có chức năng hiển thị để hiển thị cả hai. Vấn đề là, nếu tôi cố gắng một cái gì đó ra như {user} {đóng vai chính postcontent}, nó có phải nó theo cách này:
activity.trackable.post.content
Vì vậy, kết quả này trong nhiều truy vấn, mỗi lần nó tìm thấy một bài. Làm cách nào để giải quyết vấn đề/tình huống này?
Xin cảm ơn trước.
Dễ theo dõi cũng có thể chứa loại lớp polymorpic khác, whicj có thể không có: nội dung làm thuộc tính. – swaroopsm