是否有任何逻辑可将ActiveRecord查询记录的字段从1更新为n。
@user = User.where(country: 'US')
需要将@user的字段计数以上的值从1更新为n。
谢谢。
编辑:
需要更新所有记录的-字段为count
。
AR查询将返回数组,需要从1到n到array(tuple)的count
字段中的每个元素
示例:AR查询输出:[User1, User2, User3, User4, ...]
User1的count
字段必须更新为1
User2的count
字段必须更新为2
,依此类推。
答案 0 :(得分:1)
您可以使用SQL来完成此操作,具体取决于您的数据库,但是pub fn apply_random_pos(n: usize, min_distance: f64) -> Vec<(f64, f64)> {
fn distance(p1: (f64, f64), p2: (f64, f64)) -> f64 {
((p1.0 - p2.0).powf(2.) + (p1.1 - p2.1).powf(2.)).sqrt()
}
let mut rng = thread_rng();
let mut positions = Vec::with_capacity(n);
while positions.len() < n {
let mut p1 = rng.gen::<(f64, f64)>();
let mut p2 = rng.gen::<(f64, f64)>();
// Multiply with 10 because we need numbers bigger than 1
p1 = (p1.0 * 10.0, p1.1 * 10.0);
p2 = (p2.0 * 10.0, p2.1 * 10.0);
if positions.iter().all(|&p2| distance(p1, p2) > min_distance) {
positions.push(p1);
positions.push(p2);
}
}
positions
}
的{{1}}不支持。
查看以下内容:Update SQL with consecutive numbering
要执行SQL,您可以使用:
ActiveRecord