0

PublicActivity gem を使用してニュース フィードを作成しています。すでに正常に稼働していますが、アクティビティを別のテーブルに関連付けて詳細を表示したい

現在、私のニュース フィードには、誰かが投稿したときに「マイクロポストを投稿しました」としか表示されません。投稿されたマイクロポストをニュース フィードに表示したいのです。アクティビティがマイクロポスト テーブルを参照してマイクロポストを取得するように、gem ファイルを編集して関連付けを含めました。

module PublicActivity
 module ORM
  module ActiveRecord
   # The ActiveRecord model containing
   # details about recorded activity.
   class Activity < ::ActiveRecord::Base
    include Renderable
    belongs_to :trackable, :polymorphic => true
    belongs_to :owner, :polymorphic => true
    belongs_to :recipient, :polymorphic => true
    serialize :parameters, Hash

    # I added this
    has_one :micropost, foreign_key: "id", primary_key: "trackable_id"
    end
  end
 end
end

これはトリックを行うようで、ユーザーが投稿したマイクロポストを示していますが、gem を編集せずにこれを行いたいと考えています。私はサルにパッチを当てるさまざまな方法を試しましたが、それを理解できないようです。誰かが私を助けることができますか?

前もって感謝します

これが私のコードの一部です

コントローラ

class ActivitiesController < ApplicationController
 def index
  @activities = PublicActivity::Activity.order("created_at desc").where(owner_id: [current_user.followed_user_ids, current_user], owner_type: "User")
 end
end

見る

<h1>Activities</h1>

<% @activities.each do |activity| if activity.trackable %>
 <div class="activity">
  <%= render_activity activity %>
 </div>
<% end %>
<% end %>

マイクロポスト活動

<% if activity.trackable %> 
<%= link_to gravatar_for(activity.owner), activity.owner %>
<span class="user">
    <%= link_to activity.owner.name, activity.owner %>
</span>
<span class="content">
    Created a Micropost
    # <%= activity.micropost.content %> COMMENTED OUT WHILE NOT WORKING
</span>
<span class="timestamp">
    <%= time_ago_in_words(activity.created_at) %> ago.
</span>
<% end %>

編集

また、Gem を作者の GitHub から最新のものに更新すると、Gem を編集しても機能しません。このため、私は彼の宝石からフォークしてクローンすることができませんでした

4

1 に答える 1

0
module PublicActivity
 module ORM
  module ActiveRecord
   class Activity < ::ActiveRecord::Base
    has_one :micropost, foreign_key: "id", primary_key: "trackable_id"
   end
  end
 end
end

config/initializers/public_activity_monkey_patch.rbそれを行う必要があります。

于 2013-05-29T21:45:26.960 に答える