рельсы проблема внешнего ключа - PullRequest
0 голосов
/ 15 мая 2011

Я новичок в фреймворке Rails.Я создал таблицы:

DealerGroups                         Dealer 
------------                         ------------
Id:integer(primary key)              Id:integer(primary key)
name:string                          dealer_group_id:integer(foreign key)

Но когда я пытаюсь установить Dealer.dealer_group_id = value (это значение существует в таблице DealerGroups), я получаю исключение "UninitializedConstant Dealer :: DealerGroup".

В моих моделях:

class Dealer < ActiveRecord::Base
  belongs_to :dealer_buying_group, :foreign_key => "dealer_buying_group"
end

class DealersGroup < ActiveRecord::Base
  has_many :dealer
end

Если я удаляю отношения has_many и belongs_to, все работает нормально.

Почему это не работает с отношениями?

Ответы [ 2 ]

1 голос
/ 16 мая 2011

Будьте осторожны с "s" (почему ваша таблица "Дилер" не является "Дилерами"?) Вам не нужно вручную устанавливать внешний ключ в Rails, все, что вам нужно, чтобы определить для него поле Model_ID, когда вы создаете свой скаффолд / модель / контроллер, тогда принадлежит_ и has_many модель сделает отношение для вас

База данных:

DealerGroups                         Dealers 
------------                         ------------
Id:integer(primary key)              Id:integer(primary key)
name:string                          dealergroup_id:integer

Модели :

class Dealer < ActiveRecord::Base
  belongs_to :dealergroup
end

class DealersGroup < ActiveRecord::Base
  has_many :dealers
end

Чтобы получить доступ к имени дилерской группы от дилеров, просто используйте

controller: 
@dealer = Dealer.find_by_id(myInt)

view:
<%= @dealer.dealergroup.name %>
0 голосов
/ 15 мая 2011

У вас есть класс DealersGroup, тогда как вы ищете dealer_group_id.

...