我的Rails应用程序中存在问题,我一直在苦苦挣扎一段时间。我有三个类,商品, MerchandiseCategory 和 MerchandiseMerchandiseCategory 。 MerchandiseMerchandiseCategory用于创建其他两个之间的多对多关系。
当我在Rails控制台中运行以下命令时,我得到了相应的结果:
m = MerchandiseMerchandiseCategory.first
# Returns an object that relates the first Merchandise
# with the first Merchandise Category
m.merchandise_category
# Returns the corresponding merchandise_category
m.merchandise_category.merchandise_merchandise_categories.first
# Returns an array of all corresponding MerchandiseMerchandiseCategy ids
m.merchandise
# Returns the corresponding merchandise
m.merchandise.merchandise_merchandise_categories.first
# LoadError: Unable to autoload constant
# Merchandise::MerchandiseMerchandiseCategory, expected
# /home/bjarki/Development/h2/app/models/merchandise/merchandise_merchandise_category.rb
# to define it
因此,除了Merchandise和MerchandiseMerchandiseCategory之间的一对多关系外,所有关系都有效。我已经尝试了我能想到的一切,包括删除商品模型并重新创建它。
这些是我正在使用的课程
merchandise.rb
# branch_id: uuid
# name: string
# price: integer
class Merchandise < ApplicationRecord
has_many :merchandise_merchandise_categories
has_many :categories, class_name: :MerchandiseCategory,
through: :merchandise_merchandise_categories
belongs_to :branch
end
merchandise_category.rb
# branch_id: uuid
# name : string
class MerchandiseCategory < ApplicationRecord
has_many :merchandise_merchandise_categories
has_many :merchandises, through: :merchandise_merchandise_categories
belongs_to :branch
end
merchandise_merchandise_category.rb
# merchandise_id: uuid
# merchandise_category_id: uuid
class MerchandiseMerchandiseCategory < ApplicationRecord
belongs_to :merchandise
belongs_to :merchandise_category
end
这让我在最后几天疯狂。如果有人能指出我正确的方向,我将非常感激。
答案 0 :(得分:0)
把
中的merchandise_merchandise_category.rb
应用程序/模型/商品/ merchandise_merchandise_category.rb
让我知道
答案 1 :(得分:0)
我终于知道发生了什么,这是我文件的位置。
我的应用程序包含相当多的模型,所以我决定为我的应用程序的不同组件创建几个目录。
我放置这三个文件的目录名称为商品,显然是不允许的。我重命名目录为 merchandise_component ,一切正常。
如果有人可以解释为什么我不允许该目录具有该名称,请在下面发表评论: - )