ruby-on-rails – Rails 4 API – 接受命名空间模型的嵌套属性
我有这样的事情:
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 在我的订单控制器中,我允许order_lines_attributes参数: params.permit(:name,:order_lines_attributes => [ :quantity,:price,:notes,:priority,:product_id,:option_id ]) 然后,我正在调用相应的路线,这将创建一个订单和所有嵌套的order_lines.该方法成功创建了一个订单,但是一些rails魔术也试图创建嵌套的order_lines.我收到此错误: 未初始化的Constant OrderLine. 我需要我的accepts_nested_attributes_for调用才能意识到OrderLine被命名为Api :: V1 :: OrderLine.相反,幕后的rails只是在没有命名空间的情况下寻找OrderLine.我该如何解决这个问题? 解决方法
我很确定这里的解决方案只是让Rails知道完整的嵌套/命名空间类名.
来自docs:
我经常看到,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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |