动态更改模型属性

时间:2013-12-16 20:06:09

标签: ruby-on-rails ruby activerecord

有没有办法动态更改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)。

这样对我来说会更容易,因为客户列表变得更大,只需添加我希望它们按顺序排列的新客户端,并让其余的客户订单动态更改。

2 个答案:

答案 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)

我认为你正在寻找acts_as_list gem。

https://github.com/swanandp/acts_as_list

我自己没有使用它,但我知道它,我认为它会做你想要的。

祝你好运!