gpt4 book ai didi

ruby-on-rails - Rails 4 API - 接受命名空间模型的嵌套属性

转载 作者:行者123 更新时间:2023-12-04 05:58:03 25 4
gpt4 key购买 nike

我有这样的事情:

module Api
module V1
class Order < ActiveRecord::Base

has_many :order_lines
accepts_nested_attributes_for :order_lines
end
end

module Api
module V1
class OrderLine < ActiveRecord::Base

belongs_to :order
end
end

在我的订单 Controller 中,我允许 order_lines_attributes参数:
params.permit(:name, :order_lines_attributes => [
:quantity, :price, :notes, :priority, :product_id, :option_id
])

然后我对适当的路线进行后期调用,这将创建一个订单和所有嵌套的 order_lines .该方法成功创建了一个订单,但一些 rails 魔法也在尝试创建嵌套的 order_lines。我收到此错误:
Uninitialized Constant OrderLine .

我需要我的 accepts_nested_attributes_for调用了解 OrderLine命名空间为 Api::V1::OrderLine .相反,幕后的 rails 只是在寻找 OrderLine没有命名空间。我该如何解决这个问题?

最佳答案

我很确定这里的解决方案只是让 Rails 知道完整的嵌套/命名空间类名。

从文档:

:class_name

Specify the class name of the association. Use it only if that name can't be inferred from the association name. So belongs_to :author will by default be linked to the Author class, but if the real class name is Person, you'll have to specify it with this option.



我通常看到, class_name 选项将字符串(类名)作为参数,但我更喜欢使用常量,而不是字符串:
module Api
module V1
class Order < ActiveRecord::Base
has_many :order_lines,
class_name: Api::V1::OrderLine
end
end
end

module Api
module V1
class OrderLine < ActiveRecord::Base
belongs_to :order,
class_name: Api::V1::Order
end
end
end

关于ruby-on-rails - Rails 4 API - 接受命名空间模型的嵌套属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33133694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com