Rails 3 - ассоциация has_many не сохраняется (TypeError) - PullRequest
12 голосов
/ 11 декабря 2011

В магазине есть множество предметов, а предмет принадлежит в магазин

Я делаю новый магазин, сохраняю, все хорошо. Я проверяю, могу ли я позвонить .items на него.

ruby-1.9.2-p290 :063 > s.items
  Item Load (0.3ms)  SELECT "items".* FROM "items" WHERE "items"."store_id" = 12
 => [] 

Но когда я пытаюсь вызвать create или valid? он возвращает следующее:

ruby-1.9.2-p290 :064 > s.items.create
  Store Load (0.7ms)  SELECT "stores".* FROM "stores" WHERE "stores"."id" = 12 LIMIT 1
TypeError: Cannot visit Store

Я никогда раньше не видел следующую ошибку, так что я думаю об этом!


РЕДАКТИРОВАТЬ: после выпадения и повторной миграции, все еще получите следующее:

    ruby-1.9.2-p290 :008 > Item.create(:store_id => 5)
  Store Load (0.2ms)  SELECT "stores".* FROM "stores" WHERE "stores"."id" = 5 LIMIT 1
TypeError: Cannot visit Store

1 Ответ

37 голосов
/ 13 декабря 2011

В случае, если кто-то еще столкнется с этой проблемой, Оказалось, что это проблема проверки с моделью «Item». Первоначально у меня было это настроено:

  validates :name, :presence => true, uniqueness => { :scope => :store }         

С областью, только установленной: store. Оказалось, мне нужно было явно указать: store_id:

  validates :name, :presence => true, uniqueness => { :scope => :store_id }         
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...