如何限制用户添加的记录(评论)数量?

时间:2011-04-04 13:06:29

标签: ruby-on-rails activerecord

如何限制用户可以为一个场地编写的评论数量?

如果他们试图两次审查一个场地,我还想要一个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返回未定义的方法`review'

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

如果您可以阻止用户首先查看场地,那会更好。在您的视图中(或创建帮助程序),检查用户是否已经审查过该场地(许多方法)。如果是,请不要显示评论表。简单。如果你是OC,那就是你在登记控制器的时候。

相关问题