Rails CMS酪蛋白和唯一性验证

时间:2016-01-21 22:07:13

标签: ruby-on-rails ruby validation

您好我在尝试向我的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

感谢您的所有时间和帮助!

1 个答案:

答案 0 :(得分:3)

我不知道那个gem,但是在rails中,验证属于定义模型的文件,而不是控制器。

根据您提到的宝石代码行判断: https://github.com/russellquinn/casein/blob/master/app/models/casein/admin_user.rb#L26 它应该与Casein一样工作。 (请注意,该文件定义了模型,而不是控制器)。