0
我的表模型看起來像這樣排序字典哈希
模型NiceFile
name:string
file_type:integer
然後我有一個像
{1=>'aaa', 2=>'bbb', 3=>'ccc'}
我如何可以按本詞典下令記錄的字典嗎?
我的表模型看起來像這樣排序字典哈希
模型NiceFile
name:string
file_type:integer
然後我有一個像
{1=>'aaa', 2=>'bbb', 3=>'ccc'}
我如何可以按本詞典下令記錄的字典嗎?
如果你想在Ruby中進行排序,那麼你可以做這樣的事情:
ordering = {1=>'aaa', 2=>'bbb', 3=>'ccc'}
files = NiceFile.where(...).sort_by { |n| ordering[n.file_type] }
的where(...)
,當然,只是一個佔位符,你需要做的就是你NiceFiles什麼AR的事情。只要您的數據庫操作都不關心排序,這將工作正常;在實踐中,這意味着它通常沒問題,除非您計劃使用limit
和offset
來抓取數據庫結果的一部分。
如果您需要在數據庫中使用您的自定義排序,那麼您希望將您的散列放入一個表格(如ordering_table
),加入它並對值進行排序。事情是這樣的:
files = NiceFile.where(...).
joins('left join ordering_table on nice_file.file_type = ordering_table.file_type').
order('coalesce(nice_file.order_pos, 1000)').
limit(11)
的3210和left join
在那裏如果你有nice_file.file_type
值不在你ordering_table
。
您的哈希鍵是否意味着'file_type'值?你想要在數據庫內還是在數據庫外面進行排序? –
是的,鍵是file_types。我喜歡簡單解決方案。 – blyp
事情不按字典排序 - 你想按鍵或價值排序的東西? –