我正在构建我的第一个rails应用程序,但遇到了一些麻烦。这是我的背景:
我创建了一个api / v1 / orders控制器,它接受来自包含多个订单项订单的第三方的JSON消息。在此控制器中,我使用accepts_nested_attributes_for :line_items, allow_destroy: true
一次性创建订单和多个订单项。
现在,在创建我要创建货件的订单和订单项后。我最初的想法是在订单模型中创建一个方法,因为在插入订单后应该同时创建特定订单的所有货件。现在我如何访问模型中的订单属性?
在我的控制器中,这是我的订单#create
order = Order.new(
shopify_order_id: params[:id],
shopify_created_at: params[:created_at],
shopify_order_name: params[:name],
#etc etc
line_items_attributes: create_line_items(params[:line_items])
)
在order.save
之后,我想致电order.assign_shipments
。如何访问我在订单控制器中设置的属性?
在我的订单模型中,我想做类似的事情:
def self.assign_shipments
order.line_items.each do |line_item|
# check line item params
# create_shipments based on line item params
end
end
但是,我不知道如何访问订单的属性(订单项)?这些甚至可以在模型中使用,还是仅在我的订单控制器实例中可用(因此我应该在订单控制器中创建货件)?
答案 0 :(得分:1)
在方法声明前面使用self.
使其成为Class方法。您需要一个实例方法,因为您在Order实例上调用了assign_shipments
。然后在方法中使用self
来引用实例本身。
def assign_shipments
self.line_items.each do |line_item|
# check line item params
# create_shipments based on line item params
end
end