Ruby on rails 在控制器的创建方法内的对象上设置ActiveRecord错误
我想检查根据用户指定的url检索的提要是否为nil,但我似乎找不到处理这个问题的好方法 我觉得最好的处理方法是在通过if语句进行检查时设置一个自定义ActiveRecord错误,就像我在下面的代码中添加的那样。但是,我该如何强制保存失败呢? 代码需要访问feed_url,以便我可以验证它是否为nil或返回404等Ruby on rails 在控制器的创建方法内的对象上设置ActiveRecord错误,ruby-on-rails,ruby-on-rails-3,activerecord,feedzirra,Ruby On Rails,Ruby On Rails 3,Activerecord,Feedzirra,我想检查根据用户指定的url检索的提要是否为nil,但我似乎找不到处理这个问题的好方法 我觉得最好的处理方法是在通过if语句进行检查时设置一个自定义ActiveRecord错误,就像我在下面的代码中添加的那样。但是,我该如何强制保存失败呢? 代码需要访问feed_url,以便我可以验证它是否为nil或返回404等 # POST /feeds # POST /feeds.json def create @feed = Feed.new(params[:feed]) feed
# 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
您可以在模型中使用回调
class Feed < ActiveRecord::Base
before_save :check_model
def check_model
if condition == True
#Execute true statement
else
# raise error
end
类提要
谢谢如果代码不需要访问特定的实例变量,那么before\u验证是正确的。正确的解决方案是验证do | feed | feed.errors.add(:base,“看起来这不是有效的feed,或者feed不工作!”),除非!!feed.feed_数据结束