Я создал простой пример в качестве проверки работоспособности и до сих пор не могу уничтожить элемент по обе стороны от отношения has_and_belongs_to_many в рельсах.
Всякий раз, когда я пытаюсь удалить объект из любой таблицы, я получаю страшное сообщение об ошибке NameError / "uninitialized constant".
Чтобы продемонстрировать, я создал пример приложения rails с классом Boy иСобачий класс.Я использовал базовый каркас для каждого и создал таблицу связывания с названием boys_dogs.Затем я добавил простую процедуру before_save, чтобы создать новую «собаку» каждый раз, когда был создан мальчик, и установить отношения, просто чтобы легко настроить вещи.
dog.rb
class Dog < ActiveRecord::Base
has_and_belongs_to_many :Boys
end
boy.rb
class Boy < ActiveRecord::Base
has_and_belongs_to_many :Dogs
def before_save
self.Dogs.build( :name => "Rover" )
end
end
schema.rb
ActiveRecord::Schema.define(:version => 20100118034401) do
create_table "boys", :force => true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "boys_dogs", :id => false, :force => true do |t|
t.integer "boy_id"
t.integer "dog_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "dogs", :force => true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
end
Я видел много сообщений здесь и в других местах об аналогичных проблемах, но обычно решения используются с помощью own_to и множественного числа / единственного числаимена классов путаются.Я не думаю, что это так, но я попытался переключить выражение habtm на использование имени в единственном числе, чтобы посмотреть, помогло ли это (без удачи).Кажется, мне здесь не хватает чего-то простого.
Фактическое сообщение об ошибке:
NameError в BoysController # destroy
неинициализированная константа Boy :: Dogs
След выглядит так:
/ Библиотека / Ruby / Gems / 1.8 / gems / activesupport-2.3.4 / lib / active_support / dependencies.rb: 105: в const_missing'<br>
(eval):3:in
destroy_without_callbacks '
/ Библиотека / Ruby / Gems/1.8/gems/activerecord-2.3.4/lib/active_record/callbacks.rb:337:in destroy_without_transactions'<br>
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/transactions.rb:229:in
send '
...
Спасибо.