我們正在嘗試爲項目建立最佳實踐,並且我們正在討論應該在何處放置SQL和ActiveRecord方法。Ruby on Rails ActiveRecord約定
我的理解是,你想保持儘可能多的邏輯控制器儘可能。我認爲我們同意屬於模型的複雜SQL查詢,但我們不同意簡單的AR方法應該在哪裏存在,無論是在控制器還是在模型中。
因此,與喜歡的東西簡單化:
client = Client.find(10)
會是理想的生活在一個模型或控制器?我明白它可能沒有太大的區別,答案也沒有關係,但對這個問題的任何洞察力都會很大。
'client = Client.find(10)'是一個相當簡單的操作,並且有一點不在上下文中,所以我會說它可能會進入控制器或模型,具體取決於它的完成原因。沒有其他指導,我可能會說控制器。約定是控制器和視圖在代碼上很簡單,代碼在模型中(並且在助手中查看幫助代碼),但它是一個*規範*(並非絕對規則),這是有原因的,很多代碼與排序,篩選和處理與模型相關的數據有關。控制器可以有*一些*代碼。:) – lurker
這是一個討論,源自博客閱讀:「複雜的查詢(即比簡單的查找更復雜);一般來說,你不應該使用where方法或任何其他查詢構建方法喜歡它,在模型類本身之外「。 我剛纔意識到他說的發現可以在控制器中使用,那麼Client.where(「first_name ='Carly'」) 我認爲這應該是在控制器之外? – CarlyL
對於'Client.where(「first_name ='Carly'」)',我仍然會說*它取決於*(在上下文中)。 :) – lurker