我试图与设计一起设置狂欢(不是' spree_auth_devise' gem但是独立设计)。我已经关注了http://guides.spreecommerce.com/developer/authentication.html指南,一切顺利,直到我在商店中点击了“#34;添加到购物车"这会带来以下错误:
NoMethodError in Spree::OrdersController#edit
undefined method `orders' for #<User:0x007f6bb8782730>
我可以通过添加到用户模型来修复该错误:
def orders
spree_orders
end
但我认为不是应该修复的方式。
任何人都可以告诉我正确的设置方式,这样我就不会收到错误吗?
答案 0 :(得分:1)
添加订单关联将是纠正错误的正确方法:
has_many :orders, foreign_key: :user_id
如果你看一下Spree项目中的LegacyUser
,它将显示你的用户模型需要提供的许多准系统才能与Spree一起正常运行。
https://github.com/spree/spree/blob/master/core/app/models/spree/legacy_user.rb
答案 1 :(得分:0)
用户和订单之间应该有适当的关联。用户可以拥有多个订单,因此请按以下方式更新代码 -
class User < ActiveRecord::Base
has_many :orders
end
class Order < ActiveRecord::Base
belongs_to :user
end
答案 2 :(得分:0)
正确的方法是将其添加到您的用户模型中:
has_many :orders, class_name: 'Spree::Order'
https://github.com/spree/spree/issues/5393#issuecomment-56445173