如何检查Rails中是否存在关联对象?

时间:2013-12-21 09:53:13

标签: ruby-on-rails

评论控制器中有以下代码:

  def create
    current_user.comments.create!(place: current_place, content: params[:content])
    render json: encode_result
  end

  private
    def current_place
      Place.find(params[:place_id])
    end

此代码为当前用户和当前位置创建新评论;如果当前位置不存在,则此代码抛出异常RecordNotFound。我可以为'create'方法发送'place_id'而不是'place',但我需要在创建新评论之前检查是否存在该位置。请告诉我,我的解决方案是好还是有更好的方法?提前致谢。

2 个答案:

答案 0 :(得分:1)

这正在做它应该做的事情。你的代码是完美的,因为它现在写的。如果指定的记录不存在,您特别希望暂停执行。您需要做的就是处理异常。

您可以通过rescue_fromApplicationController放在{{1}}中,使用rescue_from或整个应用程序为整个控制器执行此操作。

答案 1 :(得分:0)

你可以这样做.........

 def create
current_user.comments.create!(place: current_place, content: params[:content]) if current_place
    render json: encode_result
  end

  private
    def current_place
      Place.find(params[:place_id])
    end