2013-02-19 8 views
0

Мне не удалось найти решение этой проблемы. Это похоже на многие вопросы, заданные до этого, но я считаю, что в моей жизни что-то не так. Сейчас я получаю эту ошибку:NameError in Account # show, Ruby on Rails

NameError in Account#show 
uninitialized constant Account::AccountProces 

Он бросает ошибку на мой взгляд:

<%@account.account_process.each do |process|%> 
    Name: <%=process.name%><br/> 
<%end%> 

Теперь я проверил имена и все совпадает, кроме AccountProces должны быть AccountProcess. Я не знаю, почему он показывает, что у AccountProces есть только один. Я искал всю свою директорию для чего-то, что имеет только 1 с. Я еще ничего не нашел. Вот моя модель:

class AccountProcess < ActiveRecord::Base 
    attr_accessible :account_id, :name 
    validates :account_id, presence: true 
    validates :name, presence: true 

    belongs_to :account 
    def as_json options={} 
    { 
     id: id, 
     name: name, 
     open_count: open_count, 
     created_at: created_at, 
     update_at: updated_at 

    } 
    end 
end 

Вот моя миграция:

class CreateAccountProcesses < ActiveRecord::Migration 
    def change 
     create_table :account_processes do |t| 
     t.references :account 

     t.string :name, :null => false, :default => "" 

     t.timestamps 
     end 
    end 
end 

Вот мой упрощен счет Модель:

class Account < ActiveRecord::Base 
    attr_accessible :computer_id, :allotted_time, :domain, :tracking, :used_time, :username, :account_process_attributes 

    validates :username, :presence => true 
    validates :computer_id, :presence => true 

    has_many :account_process, :dependent => :destroy 

    accepts_nested_attributes_for :account_process 

    def as_json options={} 
    { 
    id: id, 
    computer_id: computer_id, 
    domain: domain, 
    username: username, 
    tracking: tracking, 

    account_process_attributes: account_process, 

    created_at: created_at, 
    update_at: updated_at 
    } 
    end 
end 

Это должно быть все, что я могу думать о том, что будет вызывают эту проблему. У меня есть другие атрибуты, такие как история и программа. Они почти идентичны процессу учета и не порождают ошибок. Он выдает эту ошибку как в моих представлениях, так и когда я пытаюсь сохранить в db, используя мой REST API.

ответ

0

Попробуйте изменить

class Account < ActiveRecord::Base 
... 
    has_many :account_process, :dependent => :destroy 
... 
end 

в

class Account < ActiveRecord::Base 
... 
    has_many :account_processes, :dependent => :destroy 
... 
end 

и изменить эту ассоциацию в вашей точки зрения тоже.

Имя ассоциации в has_many должно всегда быть плюрализованным, ActiveRecord определит класс путем объединения имени ассоциации.

Если это не удается правильно сформировать имя класса, вы могли бы сделать что-то вроде этого:

has_many :account_processes, :class_name => "AccountProcess" 
+0

Это дает мне эту ошибку: Никакой связи не найдено для имени 'account_process'. Он еще не определен? – Rizowski

+0

Вы также должны переименовать свои вызовы в эту ассоциацию (например, здесь '@ account.account_process.each') – Deradon

+0

Хорошо, мне нужно заставить его работать с множественными номерами, но немного сработало с ним, чтобы я мог его заставить работать добавив :class_name => "AccountProcess" в мою ассоциацию. Это давало мне ошибку undefined method 'key?' for nil:NilClass. – Rizowski

Смежные вопросы