【发布时间】:2017-03-12 03:34:50
【问题描述】:
假设我的应用中有贷款资源。它可以被用户接受或拒绝。我可以将accepted 和rejected 操作添加到我的LoansController,但是是否有其他选项可以让我的控制器保持RESTful?
【问题讨论】:
标签: ruby-on-rails rest controller
假设我的应用中有贷款资源。它可以被用户接受或拒绝。我可以将accepted 和rejected 操作添加到我的LoansController,但是是否有其他选项可以让我的控制器保持RESTful?
【问题讨论】:
标签: ruby-on-rails rest controller
有几种方法。
您可以拥有一个带有create 和destroy 操作的LoanAcceptances 控制器——也就是说,拒绝贷款是“破坏贷款接受”。这是违反直觉的,但确实让您的控制器保持“RESTful”。
您可以有一个带有create 操作的LoanAcceptances 控制器和一个带有create 操作的LoanRejections 控制器 - 也就是说,拒绝贷款是“创建贷款拒绝”。现在你有两个控制器,只有一个方法。
或者,您可以将它们都放在LoansController 中作为accepted 和rejected。这违反了“REST”的设计原则,但符合常识。
你会发现有人愿意为这两种方法争论不休——但不要太沉迷其中。要么会工作。如果您发现您的LoansController 方法越来越多(例如accept、reject、mark_pending、apply_interest、make_payment 等),那么也许值得拉他们走出去的“独立控制器”方法。
如果您没有发现,最好保持简单并将它们放在同一个控制器中。
前段时间我问了一个类似的问题,你会觉得这很有趣:non-RESTful actions in Rails
【讨论】: