По соглашению Rails, если вы еще не указали свой class_name
об ассоциации, он будет искать уникальную версию с именем ассоциации для названия класса. Если, например, у вас есть модель SavedFriend
, ваша ассоциация должна быть названа saved_friends
. Если он не может найти класс для ассоциации, Rails имеет тенденцию искать класс в классе, который пытается его вызвать. Ошибка немного неясна, но я видел это много раз, когда у меня есть опечатка в моих ассоциациях.
# in app/models/saved_friends.rb
class SavedFriend < ActiveRecord::Base
belongs_to :category
end
# in app/models/category.rb
class Category < ActiveRecord::Base
has_many :saved_friends
end
Кроме того, если ваша схема присвоения имен файлов и классы, как спорадическая, как это в вашем вопросе, вы будете иметь плохое время. Имена файлов должны быть строчными и подчеркнутыми, имена классов должны быть верблюдной версией имени файла. то есть Categories_controller.rb
должно быть categories_controller.rb
, а класс должен быть CategoriesController
. Аналогичным образом, saved_friend.rb
должен содержать class SavedFriend
.
Является ли ваш класс «SavedFriend» именно в папке 'models' или находится в нем подпапка? – tolgap