铁轨中的未初始化常数?

时间:2014-01-22 19:40:03

标签: ruby-on-rails-3

所以我已经构建了一个新的controller =“Categories_controller.rb”和一个新的Model =“Category.rb”,现在我通常会使用我的Savedfriend.rb模型并将其与Category.rb模型一起使用;就像这样; / p>

<%= category.savedfriends.size %>

然而这次我一直在努力;

uninitialized constant Category::Savedfriend

这让我发疯了。我的模型都设有belongs_to。

1 个答案:

答案 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