【发布时间】:2015-01-19 23:05:15
【问题描述】:
如果我想减少一个对象的计数器属性,是添加到update动作,还是destroy动作,还是创建一个新动作更好?强>
为了更好地解释,假设您有一个 Product 和一个 CartItem 类,并且每次用户将相同的产品添加到她的购物车时,而不是拥有相同 CartItem 对象的两个副本,您递增CartItem 的 amount 属性。
如果我想让用户减少金额,我应该使用什么?例如,类似下面的代码是一种可行且传统的方法吗?还是创建一个新动作更好?
查看:
...
<%= button_to 'Remove One', [cart_item, remove_one: true], method: :patch %>
...
控制器:
def update
if params[:remove_one]
if @cart_item.quantity > 1
@cart_item.decrement!(:quantity)
flash[:notice] = "Removed one of #{@cart_item.product.title}"
redirect_to :back
else
destroy
end
end
return
end
注意:我知道标题听起来有点误导,但我并不是在寻找一种方法来减少 Rails 中的属性。我想知道的是,如果你有这样的需求,你会放在哪个动作中? 你如何决定什么动作?
编辑:伙计们,我真的期待一些可信的东西,比如来自维护良好的源代码的示例、高评价的书籍等。在这种情况下,不幸的是我无法做到将赏金奖励给任何人。
【问题讨论】:
标签: ruby-on-rails rest restful-architecture convention