目前,我有一些代码可以为一个看起来像这样的游戏生成一组集换式卡牌;
class Pack < ActiveRecord::Base
belongs_to :user
belongs_to :release
has_and_belongs_to_many :cards
after_create :fill_pack
private
# Randomly generate pack contents
def fill_pack
ids = self.release.cards.pluck(:id)
(15).times do |i|
self.cards << Card.find(ids[rand(ids.length)])
end
end
end
与我有关的特定部分是self.cards << Card.find(ids[rand(ids.length)])
. 那就是进行 15 次 SELECT 查询!这可能是个坏主意。;)
我已经有了一个以前用 pluck 抓取的 id 列表。一定有某种方法可以让我使用它们,对吧?我曾尝试过self.cards.create :card_id => ids[rand(ids.length)]
,但 self.cards.create 用于创建新卡,而不是新参考。