在我的表格中: 用户可以投票到战斗记录 战斗记录有很多投票记录(用户使用user_id进行投票)
我想通过每场战斗的投票记录的created_at列来命令用户投票的战斗。
英文版 - 我希望在投票给他们的时候获得用户投票的战斗清单。
我当前的代码 - 问题是这段代码返回一个数组,我想按顺序:
scope :picked, -> (user_id) { where("battles.id IN (SELECT DISTINCT(battle_id) FROM votes WHERE user_id = ?)", user_id)
.sort_by { |b| b.votes.find_by(user_id: user_id ).created_at }.reverse }
答案 0 :(得分:0)
在指定has_many
关联时,您必须传递阻止选项
假设您有以下型号:
Vote < ActiveRecord::Base
belongs_to :user
belongs_to :battle
end
和
Battle < ActiveRecord::Base
end
用户模型应该是这样的:
User < ActiveRecord::Base
has_many :votes, -> { order(created_at: :desc) } # Ordering goes here
has_many :battles, through: :votes
end
然后你直接查询战斗:
User.first.battles # Scoped by votes.created_at