您好我在尝试向我的Rails Casein(CMS for Rails)控制器添加唯一性验证时收到错误。我不确定我做错了什么,但我一直收到这个错误:
ActionController :: RoutingError - 未定义的方法`验证'对于 酪蛋白::上述ItemsController:分类:
我使用Casein Scaffold生成以下代码,仅在第3行添加了validates :order, uniqueness: true
。我怎样才能使:order
(我是一个整数字段类型)在我的数据库中是唯一的?
# Scaffolding generated by Casein v5.1.1.5
module Casein
class ItemsController < Casein::CaseinController
validates :order, uniqueness: true
## optional filters for defining usage according to Casein::AdminUser access_levels
# before_filter :needs_admin, :except => [:action1, :action2]
# before_filter :needs_admin_or_current_user, :only => [:action1, :action2]
def index
@casein_page_title = 'Items'
@items = Item.order(sort_order(:title)).paginate :page => params[:page]
end
def show
@casein_page_title = 'View item'
@item = Item.find params[:id]
end
def new
@casein_page_title = 'Add a new item'
@item = Item.new
end
def create
@item = Item.new item_params
if @item.save
flash[:notice] = 'Item created'
redirect_to casein_items_path
else
flash.now[:warning] = 'There were problems when trying to create a new item'
render :action => :new
end
end
def update
@casein_page_title = 'Update item'
@item = Item.find params[:id]
if @item.update_attributes item_params
flash[:notice] = 'Item has been updated'
redirect_to casein_items_path
else
flash.now[:warning] = 'There were problems when trying to update this item'
render :action => :show
end
end
def destroy
@item = Item.find params[:id]
@item.destroy
flash[:notice] = 'Item has been deleted'
redirect_to casein_items_path
end
private
def item_params
params.require(:item).permit(:title, :caption, :url, :description, :order, :image)
end
end
end
感谢您的所有时间和帮助!
答案 0 :(得分:3)
我不知道那个gem,但是在rails中,验证属于定义模型的文件,而不是控制器。
根据您提到的宝石代码行判断: https://github.com/russellquinn/casein/blob/master/app/models/casein/admin_user.rb#L26 它应该与Casein一样工作。 (请注意,该文件定义了模型,而不是控制器)。