首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Rails:为模型构建/创建块

Rails:为模型构建/创建块
EN

Stack Overflow用户
提问于 2019-09-01 13:44:00
回答 1查看 31关注 0票数 0

我有一个简单的电子商务应用程序,模型是UserOrder。模型Order有一个列status,指示带有status = 0的订单是购物车的订单的状态。实际上,User可以有多个购物车。但是一个用户只能有一个购物车。要实现此功能,我有以下模型。order.rb

代码语言:javascript
运行
AI代码解释
复制
STATUS_VALUES = { 'CART' => 0, 'CONFIRMED' => 1,'DELIVERED' => 2}
class Order < ApplicationRecord
  belongs_to :user
  has_many :order_items, inverse_of: :order
  accepts_nested_attributes_for :order_items
end

user.rb:

代码语言:javascript
运行
AI代码解释
复制
class User < ApplicationRecord
  has_secure_password
  has_many :photos
  has_many :orders
  has_one :cart
end

此外,我还创建了模型Cart,其中cart.rb:

代码语言:javascript
运行
AI代码解释
复制
class Cart < Order
  self.table_name = "orders"
  default_scope { where("orders.status = 0") }  
end

通过这个实现,我能够: 1.让用户一次只允许构建一个购物车。两个连续的user.build_cart将不起作用。太完美了,这正是我想要的。我的问题是,你可以user.orders.build(状态: 0)将允许工作,无论我已经有多少购物车。我的目标是阻止创建订单,以便只允许构建购物车。然后,可以通过更改状态列将购物车更新为非购物车。我如何在Rails中做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2019-09-01 14:30:42

构建cart的最好方法是将它们保存在会话变量中,而不是数据库中。你可以通过快速搜索找到解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57746497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档