2012-11-28 57 views
0

我的評論模型非常簡單並且可以多形地工作,但我現在增加了隱藏特定記錄的作者對這些多態關聯進行評論的功能。作爲協會如何工作?

class Comment < ActiveRecord::Base 
    attr_accessible :content, :show 
    belongs_to :commentable, :polymorphic => true 
    belongs_to :user 
end 

所以,要求,問題,帖子,提交等等都有意見,並訪問沒有問題的評論模板,但我想允許這些模型的內容的作者,以顯示或隱藏評論(而不是標記),當應用程序將它們標識爲正在評論的內容的作者時。

class Request < ActiveRecord::Base 
    has_many :comments, :as => :commentable, :dependent => :destroy 
end 

所以,我有一切工作的時候,只有一個模式,通過調用作者:@ request.user, 但我不知道如何使用元編程調用一個作家,所以註釋視圖(幫助)可以確定當前使用評論視圖的模型。

我已經對元編程做了一些研究,但還沒有找到答案。

這裏是調用的作者(@ request.user)代碼:

<% if @comments %> 
     <h1 class="mtop20">Comments</h1> 
     <% for comment in @comments %> 
      <% if signed_in? %> 
       <% if comment.show == true %> 
        <div class="well comment mtop10"> 
         <% if current_user == @request.user or current_user.has_role? :admin %> 
          <%= simple_form_for [@commentable, comment] do |f| %> 
           <div class =""> 
           <%= f.input :show, :as => :hidden, :input_html => { :value => false } %> 
           <%= f.submit "Hide Comment", :class => 'btn btn-mini pull-right' %> 
           </div> 
          <% end %> 
         <% end %> 
         <span> 
          <%= image_tag comment.user.image.source(:header) %> 
          <%= link_to comment.user.name, comment.user %></span> 
          Posted <%= time_ago_in_words(comment.created_at) %> ago 
         </span> 
         <p class="mleft20 mtop10"><%= comment.content %></p> 
         <% if signed_in? %> 
          <% if current_user.id == comment.user_id or current_user.has_role? :admin %> 
           <%= link_to 'Edit', polymorphic_path([ comment.commentable, comment], :action => :edit), 
                :class => 'btn btn-mini mtop5 mleft10' %> 
           <%= link_to 'Delete', [comment.commentable, comment], 
                :confirm => 'Are you sure?', 
                method: :delete, 
                :class => 'btn btn-mini mtop5' %> 
          <% end %> 
         <% end %> 
        </div> 
       <% end %> 
       <% if comment.show == false %> 
        <p>A comment by <%= comment.user.name %> has been hidden by <%= @request.user.name %></p> 
        <% if current_user == @request.user or current_user.has_role? :admin %> 
        <%= simple_form_for [@commentable, comment] do |f| %> 
         <div class =""> 
         <%= f.input :show, :as => :hidden, :input_html => { :value => true } %> 
         <%= f.submit "Show Comment", :class => 'btn btn-mini btn-success' %> 
         </div> 
        <% end %> 
        <% end %> 
       <% end %> 
      <% end %> 
     <% end %> 
    <% end %> 
    <%= render "comments/form" %> 
+0

「我現在增加了隱藏給定記錄的作者的評論的能力」 - 你是什麼意思?隱藏特定用戶提交的所有評論?另外,什麼是@request? –

+0

@MikeCampbell在原始問題中增加了更多背景信息以闡明。 –

+0

我在努力,但是...你是什麼意思?什麼是問題?你不能只做'comment.commentable.user'嗎? –

回答

1

使用comment.commentable.user訪問您的帖子的作者。