0
我有兩種型號profile
和review
。我在profile
模型中添加了分數列。以下代碼正在計算和更新score
,但我已有1000個配置文件已在數據庫中,我不知道如何更新現有配置文件的分數。如何更新導軌中的現有配置文件4
非常感謝您的幫助。
Profile.rb
class Profile < ActiveRecord::Base
# :phone
# :slogan
# :description
# :score
has_many :reviews
before_save :update_score
private
def update_score
self.score += 1 if changes['phone'] && changes['phone'].first.nil?
self.score += 1 if changes['slogan'] && changes['slogan'].first.nil?
self.score += 1 if changes['description'] && changes['description'].first.nil?
end
end
Review.rb
class Review < ActiveRecord::Base
belongs_to :profile
# :body
after_save :update_profile_score
private
def update_profile_score
self.profile.score += 1
self.profile.save
end
end
我試着在控制檯,但它沒有工作順便說一句,實際上用戶不能更新'審查'這就是爲什麼我保持這種方式。 – Murtza
解釋「沒有工作」。也許你忘了選擇正確的環境(例如'rails console production')。但回答關於你想要做什麼的問題請:)在控制檯中的 – Silex
'Review.all.each {| r | r.save}'正在更新分數,但'Profile.all.each {| p | p.save}'不會更新分數。我認爲'update_score'方法 – Murtza