我從列表中獲得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