Rails N-Table关系

时间:2014-04-10 15:17:02

标签: ruby-on-rails database activerecord ruby-on-rails-4

我在围绕Rails的自动化方面遇到了一些麻烦。现在我有4个不同的表,它们以某种方式相互关联,但我很难在我的应用程序中表示它。我能够在PHP / MySQL中做到这一点而没有太多问题,但是将其转换为新的框架并不像我预期的那么容易。

现在我有4张桌子,但我将会有很多模仿同样结构的道路。四个当前表是(rails类表示):

  • 用户
  • InterestPage
  • InterestPageCategory
  • InterestPageMap

每个用户都有兴趣页面通过InterestPageMap

每个InterestPage属于InterestPageCategory,反过来,has_many InterestPage(s)

当我为给定用户添加新的InterestPage时,首先需要确保InterestPageCategory存在并且InterestPage链接回正确的类别。这种关系的最佳方式是什么?

我现在使用的方法是给我这个错误:

uninitialized constant User::InterestPageCategory

所以我认为我离我想做的事情还很远。我的用户类代码如下所示:

has_many :interest_page_maps, foreign_key: "fb_id", dependent: :destroy
...
category = InterestPageCategory.where(category: resp["category"]).first_or_create
# Then I try to add the page with the correct category
page = InterestPage.where(resp[0]).first_or_create do |interestpage|
    # Should I be adding the page through the category in this block?
    interestpage.name = resp["name"]
    interestpage.id = resp["id"]
end

任何提示或建议将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

这对我来说是一个错字。 Rails在生成关系时引用文件名而不是类名,即:

包含InterestPageCategory类的文件名为interest_page_categories.rb。这是不正确的,文件需要名称为interest_page_category.rb(单数与复数),以便Rails“看到”我试图引用的类。

希望这有助于其他人,不要忘记检查你的命名人员!