我很确定我已经为标准的 has_many 正确设置了模型:通过关系...但是,我使用 rails 生成器来创建模型,并且在第一次运行它时,我不小心创建了一个名为Categorizations
(复数)而不是Categorization
在我意识到错误之前一直设置所有内容。我回滚了迁移并删除了生成器创建的 4 个文件(迁移、模型、规格、工厂)。我重新开始,我仍然得到
Association :category not found
错误。
我的主要问题: 由于我不小心创建并删除了复数名称的模型,我还需要撤消其他什么吗?
后续问题: 如果这不是问题,那么我做错了什么?是否有一些明显的疏忽,因为我已经盯着这个很久了?
跟进跟进:
我还能做些什么来帮助解决此问题?所有模型都可以在控制台中访问,并且似乎设置正确。有rake routes
模型协会吗?
这是我的看法:
<%= f.association :category %>
我也试过:
<%= f.association :category, :required => true, :collection => @categories, :as => :check_boxes, :label => "Categories:" %>
(我在控制器中设置了@categories
以下是模型:
class PressRelease < ActiveRecord::Base
has_many :categorizations
has_many :categories, :through => :categorizations
belongs_to :user
belongs_to :press_contact
attr_accessible :body, :summary, :user_id, :headline, :link, :press_contact_id, :publish_date, :subheadline
self.per_page = 5
def published
"#{self.publish_date.strftime("%A, %B %d, %Y")}"
end
end
class Category < ActiveRecord::Base
has_many :categorizations
has_many :press_releases, :through => :categorizations
attr_accessible :description, :label
end
class Categorization < ActiveRecord::Base
belongs_to :category
belongs_to :press_release
attr_accessible :category_id, :press_release_id
end
更新:这一切都在控制台中工作:
pr = PressRelease.first
pr.categories
Category Load (0.2ms) SELECT "categories".* FROM "categories" INNER JOIN "categorizations" ON "categories"."id" = "categorizations"."category_id" WHERE "categorizations"."press_release_id" = 1
c = Category.first
c.press_releases
PressRelease Load (0.3ms) SELECT "press_releases".* FROM "press_releases" INNER JOIN "categorizations" ON "press_releases"."id" = "categorizations"."press_release_id" WHERE "categorizations"."category_id" = 21
=> []
因此,该协会似乎在某种程度上正在发挥作用。我越来越有信心我错过了一些小而明显或巨大而耀眼的东西。请帮忙!谢谢!