所以我有一个名为Awards的数据库。
用户可以“奖励”食谱,但他们只能这样做一次。奖励数据库由recipe_id和user_id组成。我已经使这两个列都独一无二,所以它不会让你不止一次授予这个配方。这很好,如果你第二次尝试奖励食谱,我会收到这个错误:
columns user_id, recipe_id are not unique
是否有一些代码可以添加到创建操作中以检查此错误,然后呈现闪存错误消息,例如“已经授予的配方”而不是显示错误控制台?
这是我的创建方法:
def create
@award = current_user.awards.build(award_params)
if @award.save
flash[:success] = "Award Given!"
redirect_to recipe_path(params[:recipe_id])
else
render 'static_pages/home'
end
end
谢谢,
麦克
答案 0 :(得分:1)
有一部分称为验证的铁轨正在进行中。文档在这里:link。为了让你基本上设置,你可以:
# award.rb
class Award < ActiveRecord::Base
validates_uniqueness_of :user_id, :recipe_id
end
# awards_controller.rb
def create
@award = current_user.awards.build(award_params)
if @award.save
flash[:success] = 'Award Given!'
redirect_to recipe_path(params[:recipe_id])
else
flash[:error] = 'There was an error awarding this award!'
render 'static_pages/home'
end
end