为狂欢更正用户模型设置

时间:2014-11-17 05:09:26

标签: ruby-on-rails-4 devise spree

我试图与设计一起设置狂欢(不是' 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

但我认为不是应该修复的方式。

任何人都可以告诉我正确的设置方式,这样我就不会收到错误吗?

3 个答案:

答案 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