首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过订单逻辑的产品

通过订单逻辑的产品
EN

Stack Overflow用户
提问于 2014-01-10 01:09:14
回答 2查看 81关注 0票数 1

我有一个rails应用程序,用户既可以创建产品,也可以通过订单购买产品。

我的usertable中有一个名为usermode的字段,它将用户设置为store_owner或customer。

  • 如果usermode = 'Store_Owner‘
    • 我希望我的产品索引显示由current_user创建的产品,如果

  • 如果usermode =“Customer”
    • 我希望我的产品索引显示用户通过orders>line items>products购买的产品。

我对rails并不熟悉,也不确定我是否需要将这个逻辑放在模型中,创建单独的控制器,或者在我现有的产品控制器索引中执行某种if语句。我认为它应该在控制器索引中。

我怎样才能做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-20 08:39:32

解决方案是在我的产品控制器中这样做:

代码语言:javascript
复制
if current_user.usermode =="Store_Owner" then
  @dashboards = current_user.dashboards.active.order(:title)
elsif current_user.usermode =="Customer" then
  @dashboards = Dashboard.joins(line_items: :order).where('orders.user_id' => current_user.id).all.uniq

end
票数 0
EN

Stack Overflow用户

发布于 2014-01-10 03:05:55

根据我的意见,

我会把同样的逻辑放在同一个控制器里。在这两种情况下(Store_OwnerCustomer),您将向显示相同的数据类型(产品)。这两种情况下唯一的更改b/w是数据是不同的。罗尔是干的。因此,我认为没有必要为此创建新的视图模板。然而,有些人认为控制器中的每个动作必须代表单个功能(以减少控制器中的杂乱)。这意味着控制器中的条件语句较少。所以你有两个选择:

我认为第一个是更好的方法

  1. 创建单个视图文件。在模型中编写如下方法 Self.product_data_of(用户)#自指示类方法#检查该用户是Store_Owner还是客户#返回适当的数据端 像这样从控制器调用这个方法(我假设类名是Product) @products = Product.product_data_of(current_user) 您可以在视图文件中使用这个@products变量。
  2. 创建单个视图文件,在控制器中写入两种不同的方法,但呈现相同的视图文件。在这种情况下,不需要在模型中创建新方法。但我还是倾向于前一种方法。

编辑

一般的方法是

1) View:与how we will show相关的逻辑将在这里

2) 模型:与What datachanges on data相关的逻辑将出现在这里。

3) 控制器:与fetch data from modeldecide which page to render/redirect流相关的逻辑

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

https://stackoverflow.com/questions/21034445

复制
相关文章

相似问题

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