MYSQL Query в Rails

Необходимо обновить поле в моей базе данных MySQL. Хотелось бы использовать следующий запрос внутри рельсов:

update users set exported = TRUE where id = #{name[12]}

В настоящее время есть следующее:

db = Mysql2::Client.new( :host => 'localhost', :username => 'username', :password => 'password', :database => 'database')

results = db.query("select * from users where start_date is not NULL AND exported = 0").each(:as => :array)

results.each do |name|

db.query("update users set exported = TRUE where id = #{name[12]}")

end

индекс 12 равен UID.

2 ответа

Я хотел бы предложить вам использовать ActiveRecord для вызовов базы данных, когда вы используете Ruby on Rails.

Я предполагаю, что у вас есть хотя бы базовый User модель как это:

class User < ApplicationRecord
end

С User модель так, что ваш запрос может выглядеть так:

User.where.not(start_date: nil).where(exported: false).update_all(exported: true)

Если вы используете рельсы, я бы предложил использовать ActiveRecord. Ваше обновление будет:

@users = User.find(:all, :where => 'start_date is not null and exported = 0 and id = ?', name[12])
@users.each{ |user|
    user.exported = true
    user.save!
}

Надеюсь, это поможет! Оставьте комментарий, если вам нужна дополнительная помощь.

Другие вопросы по тегам