所以我已经构建了一个新的controller =“Categories_controller.rb”和一个新的Model =“Category.rb”,现在我通常会使用我的Savedfriend.rb模型并将其与Category.rb模型一起使用;就像这样; / p>
<%= category.savedfriends.size %>
然而这次我一直在努力;
uninitialized constant Category::Savedfriend
这让我发疯了。我的模型都设有belongs_to。
答案 0 :(得分:2)
按照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
。