如何从相关模型中引用命名空间模型?

How to refer to namespaced model from related model?

我想在 "dessert" 下命名一些 "fruit" 模型,所以我创建了一个名为 "dessert" 的模型子目录,并在其中放置了一个 "fruit" 模型。

app/models/dessert/fruit.rb

class Dessert::Fruit < ActiveRecord::Base
    def self.table_name_prefix
        'dessert_'
    end
end

随附的 table 被调用:dessert_fruits 我能够进入 rails 控制台并成功执行 Dessert::Fruit.all.

现在我想使用 has_oneaccepts_nested_attributes_for 创建与另一个模型 (meal.rb) 的关联,但我不知道如何引用命名空间模型 ( xxxxx 下面):

app/models/meal.rb

class Meal < ActiveRecord::Base
    has_one :xxxxx, dependent: :destroy, autosave: true
    accepts_nested_attributes_for :xxxxx
    # replacing :xxxxx with :dessert_fruit does not work
end

尝试明确添加 class 名称:

class Meal < ActiveRecord::Base
    has_one :fruit, dependent: :destroy, autosave: true, class_name: '::Dessert::Fruit'
    accepts_nested_attributes_for :fruit
end

This article 对使用模块组织进行了更多 in-depth 讨论。