2013-05-07 35 views
0

我必須使用PublicActivity創業板下方觀察如何基於模型屬性創建不同的公共活動? (軌道3)

class Post < ActiveRecord::Base 
    include PublicActivity::Model 
    tracked except: :destroy, owner: ->(controller, model) { controller && controller.current_user } 

,我跟蹤以下是關於寶石的鏈接更多信息一帖模式:https://github.com/pokonski/public_activity

在Post表,一個我擁有的屬性是「討論」。

create_table "posts", :force => true do |t| 
    t.text  "content" 
    t.integer "user_id" 
    t.datetime "created_at",       :null => false 
    t.datetime "updated_at",       :null => false 
    t.boolean "discussion",   :default => false 
    end 

如果討論== true,我想在PublicActivity流中顯示不同類型的文本消息。

現在,我使用這個在查看所有帖子

<li> 

    <% if activity.trackable_type == "Post" %> 
    <%= link_to activity.owner.name, activity.owner if activity.owner %> posted new content <span class="timestamp"> <%= time_ago_in_words(activity.created_at) %> ago. 
    </span> 
    <% else %> 
    <%= link_to activity.owner.name, activity.owner if activity.owner %> made a comment on a post<span class="timestamp"> <%= time_ago_in_words(activity.created_at) %> ago. 
    </span> 
    <% end %> 
</li> 

下面是視圖控制器上面

class ActivitiesController < ApplicationController 
    def index 
    @activities = PublicActivity::Activity.order("created_at desc") 
    end 
    end 

我想包括一個新的類型視圖消息的地方表示「用戶創建了一個新的討論」,它基於發佈表內屬性的布爾值。這可能嗎?

回答

2

activity.trackable將給出正在跟蹤的模型。它是一個多態關聯。

可以說用戶已經創建了一個新帖子,討論設置爲true。 在這種情況下activity.trackable會給你郵模型對象及其所有方法將恢復正常,所以你activity.trackable.discussion會給你true/false,根據我說的例子,它會在你的看法,你可以做回true

像這樣的東西

<% if activity.trackable.discussion %> 
    User created a discussion 
<% else %> 
    User created a post 
<% end %> 

希望有所幫助。