2011-02-04 20 views
0

移動進行評估,以一個幫助我有以下的評價偉大的工程:在Rails3中

在我的列表/ detail.html.erb視圖

<% if user_signed_in? && current_user.id == @listing.user_id %> 

我在視圖使用這幾次這樣我想讓這個輔助方法。

我可以把什麼樣的代碼在我的listings_helper文件,以便我可以調用這樣的事情在我看來不是:

<% if isListingOwner? %> 

任何幫助,將不勝感激。謝謝。

回答

3

當我需要做這樣的事情時,我使用康康。然後你可以寫這樣的東西:

<% if can?(:update, @listing) %> 
    Listing 
<% end %> 

在我看來更乾淨。

0

如果你在你的Listing模型belongs_to :user,你爲什麼不乾脆做

if current_user == @listing.user 

我假設你正在使用或設計的東西,從CURRENT_USER返回nil當用戶沒有簽名英寸

1

所有好的建議前奏教程,但你需要添加到您的listings_helper.rb代碼

def isListingOwner? 
    user_signed_in? && current_user.id == @listing.user_id 
end 

就個人而言,我寧願把那張支票模型:

class Listing 
    def owned_by?(user) 
    user.id == self.user_id 
    end 
end 
在你看來

然後,你可以這樣寫:

<% if @listing.owned_by(current_user) %> 

如果您正在做很多這種類型的事情,您可能需要查看基於角色的授權插件。