有没有办法动态更改rails模型中的属性?
这是我目前的情景。我有一个客户端模型,里面有五个客户端。那些客户有:
attr_accessible :name, :image, :order
订单属性是这样的,客户端可以按照管理员希望它们显示的顺序显示。
因此,五个客户中的每一个都有1,2,3,4或5的订单。假设我创建了另一个客户端,并希望客户订购4个。如果我按照我的方式执行此操作知道如何,客户订单将分别为1,2,3,4(新4),4(旧4),5。
我希望发生的是最后两个客户的订单中添加了1,因此客户订单看起来像1,2,3,4(新4),5(旧4),6(老5)。
这样对我来说会更容易,因为客户列表变得更大,只需添加我希望它们按顺序排列的新客户端,并让其余的客户订单动态更改。
答案 0 :(得分:2)
如果您还不清楚自己如何做到这一点,请使用以下Rails代码:
Client.all.update_all('sort_order = sort_order+1', ['sort_order >= ?', inserted_order])
会在订单大于或等于sort_order
的所有客户记录的inserted_order
属性中添加一个。
注意:我将order
属性更改为sort_order
以避免与SQL关键字冲突。请注意为什么这对你来说不是问题。
答案 1 :(得分:1)