在rails中,我們有Model.find(id_number)請求。我想問的是,有沒有可能向DB創建直接請求,例如:SELECT * FROM users WHERE id = 1
和替換rails基本Model.where(id: 1)
?Rails和SQL直接請求
編輯
在我model.rb我:
scope :search_import, -> {includes(:translations)}
default_scope -> {self.search_import}
,並要求(在軌控制檯)的樣子:
User Load (0.5ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
User::Translation Load (0.6ms) SELECT `users_translations`.* FROM `users_translations` WHERE `users_translations`.`category_id` IN (1)
但我不希望User::Translation
已執行(與unscoped我有相同的結果)
你爲什麼要它繞過AR? –
在我的工作項目中,當您執行'User.find(1)'時,它不僅僅是'SELECT * FROM users WHERE id = 1 LIMIT 1'。它做了一些額外的請求,以確保記錄是uniq,並且我無法對所有項目進行更改(因爲它可能會破壞模型的邏輯)。所以只有一種情況下,我需要直接請求來選擇我需要的東西。 –
@AndreyDrozdov是那個邏輯'範圍'?在這種情況下,你可以像'User.unscoped.find(1)' – Ursus