【问题标题】:uninitialized constant ruby model未初始化的常量红宝石模型
【发布时间】:2017-10-05 21:10:45
【问题描述】:

我有 3 节课:
1.文章

class Article < ActiveRecord::Base
  has_many :categories_articles
  has_many :subcategories_articles
  has_many :categories, :through => :categories_articles
  has_many :subcategories, :through => :subcategories_articles
end

2.类别

class Category < ActiveRecord::Base  
  has_many :articles  
  has_many :categories_articles  
  has_many :categories_subcategories  
  has_many :subcategories, :through => :categories_subcategories  
  has_many :articles, :through => :categories_articles  
end

3.第三个类是前两个的并集,category_article

class CategoryArticle < ActiveRecord::Base  
  belongs_to :category  
  belongs_to :article  
end

所以,当我在视图中调用时

<% f.collection_select(:category_ids, Category.all, :id, :name, {include_blank:"selects"},{class:'form-control select2 multi', :required=>true, multiple: true}) %>

我得到这个错误:

uninitialized constant Article::CategoriesArticle 

Subcategory 和 subcategory_article 类也是如此

【问题讨论】:

  • 使用四个空格或{} 按钮来格式化代码。

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord


【解决方案1】:

试试

has_many :category_articles

has_many :subcategory_articles

您还必须更改这些:

has_many :categories, :through => :categories_articles
has_many :subcategories, :through => :subcategories_articles

类似于:

has_many :categories, :through => :category_articles
has_many :subcategories, :through => :subcategory_articles

Rails 不会复数组合表名的两个组成部分。只是最后一个组件。

【讨论】:

  • 永远不要在中间使用复数形式,永远不要在结尾使用复数形式。它永远不是examples_links,而是example_links
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多