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
你能给我们举个例子说明你到目前为止有什么?我无法想象它。 –