如何从相关模型中引用命名空间模型?
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_one
和 accepts_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 讨论。
我想在 "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_one
和 accepts_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 讨论。