我有一个Track
模型,其中包含一个名为rank
的整数属性。
我正在通过具体行动更新排名:收听,下载,购买等。例如:下载曲目时,在track_controller中我使用track.increment!(:rank, by = 60)
我正在考虑创建一个关联模型TrackRank
,这样我就可以在任何时候更新一个轨道的等级时都有一个时间戳(所以我可以对一个轨道的等级进行3周的滚动查询以进行过滤和显示)。
每次更新曲目排名attr时, 是否有办法自动创建关联的TrackRank
对象?
最终目标: 能够根据过去3周内的排名数查询前X个曲目数量。
答案 0 :(得分:2)
您可以在曲目更新
上添加条件回叫class Track < ActiveRecord::Base
# ignored associations and stuff
after_update :create_track_rank, if: :rank_changed?
# ignored methods
private
def create_track_rank
track_ranks.create(data)
end
end
答案 1 :(得分:0)
您可以在控制器上更新它
class TracksController < ApplicationController
def update
@track.update!
TrackRank.create(@track)
end
end