我是Ruby on Rails的新手,在我的应用程序中,用户可以创建一个“构建”记录,只有在整个记录都是唯一的情况下才能保存。如果用户尝试创建现有的“构建”/记录并且验证失败,我需要能够将该用户重定向到现有记录。
正如我所说,我是一名新手并且勇敢地尝试使用传递给我的创建操作的参数:
def create
@build = Build.new(params[:build])
if @build.save
redirect_to :action => 'view', :id => @build.id
else
@bexist = Build.find(params[:build])
redirect_to :action => 'view', :id => @bexist.id
end
end
显然这是不正确的......我也尝试用after_validation查看回调,但不确定如何访问甚至存储现有记录的id。有人有什么建议吗?
答案 0 :(得分:0)
您需要将attribute / value哈希值作为:conditions选项传递,并且需要指定:first ,:last 或:all 作为第一个参数。
@bexist = Build.find(:first, :conditions => params[:build])
或者,您可以使用 #first 方法,而不是将 #find 与:first 参数一起使用。
@bexist = Build.first(:conditions => params[:build])
在Rails 3中,您还有另一种选择......
@bexist = Build.where(params[:build]).first