2012-04-07 5 views
0

は、ProductUser加入者とsubscriptions多くのことがしています。製品は、サブスクリプションを持っているかどうアソシエーションが存在する場合のみリンクを表示しますか?私のアプリケーションで

class User 
    has_many :products 
    has_many :subscriptions, :foreign_key => :subscriber_id 
end 

class Product 
    belongs_to :store 
    has_many :subscriptions, :as => :subscribable 
end 

class Subscription 
    belongs_to :subscriber, :class_name => "User" 
    belongs_to :subscribable, :polymorphic => true 
end 

にはどうすればいいのベースリンクブロックを示したでしょうか?

<% if #@product.subscription.present? %> 
    <%= link_to "Unsubscribe", { :controller => "products", :action => "unsubscribe_product", :id => product.id }, :method => :delete %> 
<% else %> 
    <%= link_to "Subscribe", { :controller => "products", :action => "subscribe_product", :id => product.id }, :method => :post %> 
<% end %> 

答えて

2

私はUserクラス

class User 
    def subscribed_for?(subscribable) 
    subscriptions.where(:subscribable_id => subscribable.id, :subscribable_type => subscribable.type).any? 
    end 

end 

内およびビューの使用のための方法を使用することをお勧めします

<% if current_user.subscribed_for?(product) %> 
    <%= link_to "Unsubscribe", { :controller => "products", :action => "unsubscribe_product", :id => product.id }, :method => :delete %> 
<% else %> 
    <%= link_to "Subscribe", { :controller => "products", :action => "subscribe_product", :id => product.id }, :method => :post %> 
<% end %> 
関連する問題