2011-04-04 37 views
0

我該如何去限制用戶只能爲一個場所寫評論的次數?如何限制用戶添加的記錄數量(評論)?

如果他們嘗試兩次查看場地,我還想要一個Flash消息提示。

我也不太清楚我的問題,包括什麼樣的代碼我應該,但繼承人的創建複習方法:

審查控制器

def create 
    @review = current_user.reviews.create!(params[:review]) 
    @review.venue = @venue 
    if @review.save 
    flash[:notice] = 'Thank you for reviewing this venue!' 
    respond_to do |format| 
     format.html { redirect_to venue_path(@venue) } 
     format.js 
    end 
    else 
    render :action => :new 
    end 
end 

感謝所有幫助它非常感謝!

編輯

我已經添加了這個輔助方法進入場地控制器:

def reviewed? 
    if current_user.reviews.for_venue(@venue).empty? 
     true 
    else 
     false 
    end 
    end 

,幷包裹着我的形式:

<% if reviewed? %> 
    form 
<% end %> 

但這只是返回未定義的方法`評論'爲VenuesController

回答

1

它會更好,如果你能防止用戶查看的地點第一名。在你看來(或創建一個幫手)做一個檢查,如果場地已經被用戶審查(許多方法來做到這一點)。如果是,請不要顯示評論表單。簡單。如果你非常熟悉OC,那就是當你登入控制器時。

+0

謝謝你的答案我一直在考慮這一點,有點卡住你可以看看我的編輯?我錯過了什麼? – Dave 2011-04-05 20:50:14

+0

您的for_venue(@venue)方法有什麼用處? – corroded 2011-04-06 01:51:48

1

也許你應該使用before_validation回調,這樣你就可以檢查場地是否已經被用戶查看過。您可以包括在創建行會場:

current_user.reviews.create!({:venue_id => @venue.id}.merge(params[:review])) 

而對於驗證,使用這樣的:

before_validation :check_if_already_reviewed 

def check_if_already_reviewed 
    if (check if already reviewed) 
    return false 
    else 
    return true 
    end 
end