1
我有一個rails模型,有一系列屬性(列),我不想爲每個選擇請求加載。所以我需要做的就是獲得它,這樣如果試圖訪問某個屬性(通過getter方法),那麼它將執行select語句來從數據庫中獲取所有列。Rails需要的lazyload屬性
我的問題是,當我從數據庫中獲取列時,是否有一種方法可以將這些屬性值與activerecord值一起使用,而無需使用for循環來應用每個屬性值?
我有一個rails模型,有一系列屬性(列),我不想爲每個選擇請求加載。所以我需要做的就是獲得它,這樣如果試圖訪問某個屬性(通過getter方法),那麼它將執行select語句來從數據庫中獲取所有列。Rails需要的lazyload屬性
我的問題是,當我從數據庫中獲取列時,是否有一種方法可以將這些屬性值與activerecord值一起使用,而無需使用for循環來應用每個屬性值?
試試這樣說:
def Person < ActiveRecord::Base
def method_missing(method_id, *args, &block)
begin
super
rescue
reload
super
end
end
end
然後開始加載的記錄,像這樣(例如):
person = Person.select(:id).find(20)
當你這樣做
person.name
那麼就應該打method_missing並在失敗時重新加載記錄(包含所有屬性)。
完美!正是我需要的!謝謝senoir! :) – matsko
你能給我們舉個例子說明你到目前爲止有什麼?我無法想象它。 –