簡體   English   中英

Active Record指定從update_all中的where()中選擇的值

[英]Active Record specify a value select out from where() in update_all

我想用update_all更新多行,但是我需要使用從where()中選擇的一列中的現有值,如何在update_all中指定值,它看起來像這樣:

# == Schema Information
#
# Table name: records
#
#  id                 :integer          not null, primary key
#  name               :string
#  game_id            :integer
#  score              :integer
#  date               :date

Record.where(:name =>“mike”,:game_id => 1).update_all(得分:“這里我要取出分數並進行一些修改,然后再存儲”)

非常感謝。

您必須使用SQL代碼以您想要的方式進行更新。 請注意,無法使用Ruby代碼直接操作樂譜。 如果需要,您可以創建數據庫功能。

# Increment each score by a given amount
increment_amount = 10
Record.where(:name => "mike", :game_id => 1).update_all("score=score + #{increment_amount}")

這並不是update_all的用途。 update_all通常將某個模型的每個實例的值設置為一個值。 你不能使用update_all而是做類似的事情

Record.where(:name => 'mike', :game_id => 1).each do |record|
  # record.score = record.score * 3 + 1
  record.save!
end

評論只是一個例子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM