Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:delegate方法是否总是加载关联?_Ruby On Rails_Ruby On Rails 3_Activerecord - Fatal编程技术网

Ruby on rails Rails:delegate方法是否总是加载关联?

Ruby on rails Rails:delegate方法是否总是加载关联?,ruby-on-rails,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby On Rails 3,Activerecord,我正在使用Rails 3.2中的:delegate方法来获取/设置对象关联的方法。这似乎总是加载关联,即使我没有调用委托方法 例如,如果我有: class Post < ActiveRecord::Base delegate :name, :to => :author, :prefix => true end class Post:作者,:前缀=>true 结束 如果我写了Post.all.limit(10)ActiveRecord也会为每一篇文章加载作者,不管我是否

我正在使用Rails 3.2中的:delegate方法来获取/设置对象关联的方法。这似乎总是加载关联,即使我没有调用委托方法

例如,如果我有:

class Post < ActiveRecord::Base
   delegate :name, :to => :author, :prefix => true
end
class Post:作者,:前缀=>true
结束
如果我写了
Post.all.limit(10)
ActiveRecord也会为每一篇文章加载作者,不管我是否访问过
@Post.author\u name


有没有办法惰性地加载委派的关联?或者我最好编写自定义包装器方法,它将缓慢地加载关联?

他们不急于为我加载,这可能是代码中的其他内容吗


在任何情况下,我都不喜欢将
委托
前缀一起使用,这似乎有点奇怪。您不再实际委派一个方法,而是以一种难以阅读和解析的方式定义了一个新方法。我会按照您的建议编写一个包装器方法。

它可能是我的代码中的某个内容,但我无法看到它在哪里。实际上,我也没有使用
前缀
,但为了示例的清晰性,在这里添加了它。出于其他原因,我已经转向使用包装器方法(在我看来,
delegate
在保存记录方面有点笨拙)。