@sonriente

Ошибка: Unknown attribute в ActiveRecord(ruby). Как исправить?

Здравствуйте.



Есть следующие модели:



class Contractor < User<br>
  has_many :contractorEs<br>
  has_many :customers<br>
end<br><br>
class Customer < User<br>
  belongs_to :contractor<br>
  has_many :customerEs<br>
end<br>




Есть миграция:



class AddContractorIdToCustomers < ActiveRecord::Migration<br>
  def change<br>
    add_column :customers, :contractor_id, :integer<br>
  end<br>
end<br>




Пробую создать кастомера (Сustomer), для этого захожу в консоль и делаю следующее:



c = Contractor.first<br>
c.customers.build<br>




Вместо созданного кастомера получаю следующее сообщение об ошибке:



ActiveRecord::UnknownAttributeError: unknown attribute: contractor_id<br>




Миграцию запускал, сервер рестартовал. Проблема, к сожалению, остается.

Подскажите, пожалуйста, с чем это может быть связано и как это исправить.



Лучи добра вам :)



UPD: Ruby 2/Rails 4

UPD 2: Я использую STI, все наследуется от User-a. Может быть проблема связана с этим?

UPD 3: Продолжаю исследовать проблему. Выяснилось, что создании модели через Customer.new в полях нет contractor_id:



<Customer id: nil, first_name: nil, last_name: nil, address: nil, country: nil, zip: nil, city: nil, phone: nil, company_name: nil, signature: nil, type: "Customer", created_at: nil, updated_at: nil, v_token: nil, password_digest: nil, u_token: nil, email: nil, state: "new"><br>




Если я наследую Customer от ActiveRecord::Base, то все работает нормально. Но мне надо наследовать от User.
  • Вопрос задан
  • 3345 просмотров
Пригласить эксперта
Ответы на вопрос 4
@modernstyle
Code GOD
strong_params?

 def contractor_params
    params.require(:contractor).permit(:contractior_id)
 end
Ответ написан
@DmitryTsepelev
Ruby on Rails developer
какая версия rails? если 3, то возможно надо еще дописать в Customer
attr_accessible :contractor_id
Ответ написан
@himik
замените
has_many :contractorEs

на
has_many :contractors


и будет вам счастье
Ответ написан
@Adil1
попробуйте сделать has_many :through асоциацию, http://www.rusrails.ru/active-record-associations, и при миграциях лучше использовать contactor:references:index
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы