我在哪里/如何用timeline_fu插件过滤current_user数据为最近的事件



我使用的是timeline_fu插件。我想过滤recent_events,这样任何与当前用户有关的事件都不是recent_event。更具体地说,如果用户对视频进行投票,并且视频属于当前用户,我不希望它是current_user的recent_event。在我的例子中,这意味着当secondary_object.user == current_user时,我不希望包含recent_event。(我将视频设置为secondary_object)。我不确定在哪里以及如何构建这个逻辑。

这是创建recent_events关联并通过RECENT_EVENTS_CONDITIONS过滤它们的代码(当事件的参与者是当前用户跟随的用户时,它基本上会过滤它们)

    RECENT_EVENTS_CONDITION = '(actor_type = 'User' AND actor_id IN (SELECT followed_id FROM relationships WHERE follower_id = #{id}))'
    has_many :recent_events, :class_name => "TimelineEvent",
                             :finder_sql => 'SELECT timeline_events.* FROM timeline_events
                                       WHERE ' + RECENT_EVENTS_CONDITION + '
                                       ORDER BY timeline_events.created_at DESC'

我可以把它放在SQL片段或在:conditions选项的has_many关联?

或者我可以将其放在timeeline_fu插件为创建事件提供的:if =>选项中。然而,这将不是理想的,因为我没有访问current_user在这里。我该如何做到这一点?

我能够通过在我的视图中添加一个unless语句来解决这个问题。然而,我不确定这是否是最好的解决方案。

最新更新