2012-04-03 68 views
3

我使用:導軌2.3.5紅寶石1.8.7和Windows 7家庭普通版設置爲數據庫的主鍵未命名「:id爲」

我得到了一個數據庫,我把它連接到鐵軌,沒有讀取數據並從中獲取數據時遇到問題現在我要做的就是在它添加一些功能(添加,編輯和刪除),但是當我試圖通過這樣的代碼來設置我的主鍵表的主鍵(產品代碼):

class Product < ActiveRecord::Base 
self.primary_key :ProductCode 
end 

我在PosController#指數

引發ArgumentError 錯誤的參數數目(1 0)

我怎樣才能解決這個問題:這個錯誤做了@products = Product.find(:all, :limit => 10)什麼時候?

這裏是我的控制器代碼:

class PosController < ApplicationController 

    def index 
     @cards = Card.find(:all) 
     @products = Product.find(:all, :limit => 10) 
    end 

    def new 
     @pro = Product.new 
    end 

    def edit 
    @pro = Product.find(params[:id]) 
    end 

    def update 
    @pro = Product.find(params[:id]) 
    if session[:user_id] 
       @log = "Welcome Administrator!" 
       @logout="logout" 
      else 
       @log = "Admin Log in" 
       @logout="" 
      end 

    respond_to do |format| 
     if @pro.update_attributes(params[:product]) 
     flash[:notice] = 'product was successfully updated.' 
     format.html { redirect_to(:controller => "pos", :action => "index") } 
     format.xml { head :ok } 
     else 
     format.html { render :action => "edit" } 
     format.xml { render :xml => @pro.errors, :status => :unprocessable_entity } 
     end 
    end 
    end 

    def create 
    @pro = Product.new(params[:product]) 

    respond_to do |format| 
     if @pro.save 
     flash[:notice] = 'product was successfully created.' 
     format.html {redirect_to (:controller => "pos", :action => "index")} 
     #format.xml { render :xml => @product, :status => :created, :location => @product } 
     else 
     format.html { render :controller => "pos",:action => "new" } 
     #format.xml { render :xml => @product.errors, :status => :unprocessable_entity } 
     end 
    end 
    end 

    def destroy 
    @pro = Product.find(params[:id]) 
    @pro.destroy 

    respond_to do |format| 
    flash[:notice] = 'product was successfully deleted.' 
     format.html { redirect_to(:controller => "pos", :action => "index") } 
     format.xml { head :ok } 
    end 
    end 
end 
+0

剛一說明: 「產品代碼」 不是一個地道的軌道列名。應該是'product_code'。 – 2012-04-03 03:20:06

+0

但它是我的數據庫中的列名。我是否也應該將其重命名爲「product_code」? – 2012-04-03 03:21:15

+0

嗯,是的,我會的。它不影響性能。但是它可能會給你帶來麻煩,因爲Rails鼓吹「約定優於配置」,並假設許多事情。其中之一就是數據庫名稱在snake_case中。 – 2012-04-03 03:26:22

回答

7

設置主鍵列的名稱。

self.primary_key = 「PRODUCT_CODE」

3

self.primary_key返回軌道是什麼目前認爲是主鍵,因此不帶任何參數。如果要設置主鍵,請使用self.primary_key = 'blah'

早期版本的rails也支持set_primary_key 'blah',但是這在rails 3.2中已被棄用。

相關問題