我从列表中获得5个样品(随机量),使用:如何得到。样品,如果样品存在,那么再弄
list = List.all.sample(5)
list.each do |list|
list.statuses.create(:user_id => @user.id)
end
在我的状态模型
我:
validates :list_id, uniqueness: { scope: :user_id }
验证list_id对用户是唯一的。 但是,它会给出5个样本,如果其中一个出现在状态中,它不会保存。
我想完成的事情是,它会发现一个新的列表,所以我总是以5个样本结束,而不是说3-4,因为它有2个随机重复。
'List.all.sample(5)':您调用方法'.sample'的数组,其中包含所有列表阵列您的数据库记录。你可能想在数据库中随机选取5条List记录,而不是全部抓取它们,然后随机选择其中的5条记录。 (性能提升) – MrYoshiji
@MrYoshiji我不知道你是怎么做到的,你能不能告诉我。我很乐意学习它 – sja
当然,我将需要您的数据库系统的名称(MySQL?PostgreSQL?每个数据库系统都有其自己的随机函数)。另外,我不完全了解你的问题,你能添加更多关于你们关系的信息吗? (我猜列表'has_many:状态',但用户呢?) – MrYoshiji