Использование базы данных, не созданной rake и scaffold в rails - PullRequest
0 голосов
/ 02 апреля 2012

Я использую:

Rails 2.3.5
Ruby 1.8.7
Windows 7 Home basic 64-bit

Я пытаюсь использовать базу данных, полученную с помощью mysqldump, и создать функции ADD, EDIT и DELETE для ее использования.Теперь, когда я создаю функцию редактирования и использую ее первичный ключ (productCode) в качестве параметра, я получаю эту ошибку:

ActiveRecord :: RecordNotFound в PosController # edit Не удалось найти продуктбез идентификатора

Трассировка приложения: C: /Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/base.rb: 1567: в find_from_ids' C:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/base.rb:616:in найти 'C: / Users / Aldrin / Documents / Trabaho! /Sites/dbSample/app/controllers/pos_controller.rb: 13: в `edit '

вот мой код:

def edit
@product = Product.find(params[:ProductCode])
end

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

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

Я не знаюв моей базе данных нет столбца: id.

Ответы [ 2 ]

2 голосов
/ 02 апреля 2012

Если productCode является первичным ключом в таблице, то вы должны указать rails использовать его вместо id

class Product << ActiveRecord::Base

  self.primary_key = 'productCode'

end

Таким образом, стандартные вызовы find будут работать, и вы выиграете 'не нужно переписывать методы типа to_param, поскольку rails уже сделает это за вас

1 голос
/ 02 апреля 2012
def edit
@product = Product.find(params[:id])
end

def update
@product = Product.find(params[:id])
..............................
end

EDIT

def to_param 
    "#{product_code}" 
end

def edit
@product = Product.find_by_product_code(params[:id])
end

def update
@product = Product.find_by_product_code(params[:id])
..............................
end
...