Bog*_*opa 1 ruby-on-rails update-attributes
我有一个状态报告,用户可以通过电子邮件发送该报告,我想在完成传递操作后将:sent_mail列更新为true。
def send_status
date = Date.today
reports = current_user.reports.for_date(date)
ReportMailer.status_email(current_user, reports, date).deliver
reports.update_all(sent_mail: true)
end
Run Code Online (Sandbox Code Playgroud)
和表类
AddSentMailToReports < ActiveRecord::Migration
def change
add_column :reports, :sent_mail, :boolean, default: false
end
end
Run Code Online (Sandbox Code Playgroud)
但是,在控制台中,send_mail仍然设置为false。有什么想法为什么不起作用?谢谢!
小智 5
这是因为update_all直接将更新发送到数据库-它不会更新内存中的报表模型。如果您在运行当前版本后检查数据库,则会看到记录已更新。
您需要在每个报表上调用“重新加载”以从数据库中获取更新的版本,或者
reports.map(&:reload)
Run Code Online (Sandbox Code Playgroud)
一口气完成它们。
| 归档时间: |
|
| 查看次数: |
1829 次 |
| 最近记录: |