0

ユーザー指定のURLに基​​づいて取得したフィードがnilであるかどうかを確認したいのですが、これを処理するための適切な方法が見つからないようです。

それを処理する最良の方法は、以下のコードに追加したようなifステートメントを介してチェックするときにカスタムActiveRecordエラーを設定することだと思います。しかし、どうすれば保存を強制的に失敗させることができますか?コードがnilであるか、404などを返すかを検証できるように、コードはfeed_urlにアクセスする必要があります...

# POST /feeds
  # POST /feeds.json
  def create
    @feed = Feed.new(params[:feed])
    feed = Feedzirra::Feed.fetch_and_parse(@feed.feed_url)

    if(feed) #what to do here?? the below doesn't work if feed returns as nil or fixnum

      @feed.title = feed.title
      @feed.author = feed.entries.first.author
      @feed.feed_url = feed.feed_url
      @feed.feed_data = feed
    end

    respond_to do |format|
      if @feed.save
        format.html { redirect_to reader_path, notice: 'Feed was successfully created.' }
        format.json { render json: @feed, status: :created, location: @feed }
      else
        format.html { render action: "new" }
        format.json { render json: @feed.errors, status: :unprocessable_entity }
      end
    end
  end
4

1 に答える 1

0

モデルでbefore_saveコールバックを使用できます。

class Feed < ActiveRecord::Base
 before_save :check_model

def check_model
  if condition == True
    #Execute true statement
  else
    # raise error
end

ありがとう

于 2012-09-20T03:51:30.230 に答える