我試圖找到所有具有expiry_date和訂閱標記爲過期的訂閱......每個訂閱者都會摘取其用戶標識,然後將該用戶的角色更新爲取消。我已經提出了以下內容,但它並不真正起作用。Rails如何找到並更新另一個模型中的列?
sub = Subscription.where(:subscription_plan => 'cancelled', :expiry_date => Time.now.beginning_of_day).each do |subscription|
user = subscription.pluck(:user_id)
user.role = 'cancelled'
user.save!
end
如果我只是做了以下的測試,它的工作原理,但只有一個用戶
Subscription.where(:subscription_plan => 'cancelled', :expiry_date => Time.now.beginning_of_day).pluck(:user_id)
pluck返回一個數組。嘗試user = subscription.pluck(:user_id).first – Mandeep