比方說你有購買
class Purchase < ActiveRecord:Base
def Purchase.find(id)
Purchase.find_by_sql(["Select * from purchases where id=?", id])
end
end
也許你想要的產品爲特定購買。您可以在Purchase模型中手動定義purchased_items。
class Purchase < ActiveRecord:Base
def purchased_items
PurchasedItem.find_by_sql(["Select * from purchased_items where purchase_id=?",self.id])
end
end
因此,例如,在你的控制器,你現在想購買的物品特定訂單現在你可以做到這一點
@purchase = Purchase.find(params[:id])
@purchased_items = @purchase.purchased_items
如果您需要將數據庫更原始的連接,你可以看看ActiveRecord:Base.connection.execute(sql)
對不起,但現在幾乎每個框架都有某種ORM - 比如看Doctrine。 ActiveRecord甚至在隱藏SQL方面做得並不出色 - 您可以將SQL作爲條件/組/連接選項的一部分編寫。 – 2009-11-20 16:15:29
ActiveRecord甚至不嘗試**來隱藏SQL。閱讀Rails的創建者David Heinemeier Hansson在[Agile Web Development with Rails book]的第315頁上說過(http://event2011.googlecode.com/files/Agile_Web。pdf):「[Active Record]建立在SQL既不骯髒也不壞的概念上,只是在平凡的情況下是冗長的。重點在於消除在這些微不足道的情況下處理冗長的需要(編寫10個屬性手工插入會讓程序員感到厭倦),但保留了硬性查詢的表現力 - 類型SQL被創建用於優雅處理。「 – 2012-11-09 14:12:04