我可以在Rails 2.3中进行primefaces增量而不降低到SQL吗?
我们的应用程序中有一些经常命中的代码会增加一列,如下所示:
if (r = customer.find_or_generate_reminder) r.counter += 1 r.save! end
我们正在获得锁定等待超时,因此我正在考虑将其作为primefaces操作。 天真,我想做的事情看起来像这样:
if (r = customer.find_or_generate_reminder) connection.excute('UPDATE customer_reminders SET counter=counter+1, updated_at=now() WHERE id = ' + r.id) end
是否有一种ruby世界的方式做同样的事情?
您可以使用类方法increment_counter
:
Customer.increment_counter :counter, customer
这将创造类似于:
UPDATE `customers` SET `counter` = COALESCE(`counter`, 0) + 1 WHERE (`customers`.`id` = 53)
(您必须将类或类的实例传递给此方法( customer
),而不是customer.increment!(:counter)
方法,它不是primefaces的)
我创建了一个gem,使其更加面向对象:
https://github.com/imme5150/rails_atomic_increment
允许您这样做:
customer.atomic_increment!( :counter )
让我知道你的想法。
如果你不介意一点SQL:
CustomerReminder.where(id: id).update_all('counter = counter + 1, updated_at = now()')
- Mysql2 ::错误:访问被拒绝用户’test’@’localhost’到数据库’depot_test’
- ‘DELIMITER $$’附近的错误
- ln:/usr/lib/libmysqlclient.18.dylib:文件存在
- 使用AWS RDS在Heroku App上获取Mysql2 :: Error(SSL连接错误:ASN:错误的其他签名确认)
- RoR:不能在postgres中更改_column,在MySQL中可以很好(MySQL用于开发,Postgres在Heroku上)
- 查询与activerecord的交集
- 存储访问器问题:无法在Rails 4中的mysql数据库中读取旧的已存储的json对象序列化(哈希)值
- 如何通过在Ruby Rails平台中运行sql脚本来种子mysql数据库?
- 使用MAMP 2.2在Mac上“gem install mysql2”