Ruby 始终与实体关联
在加载实体时,是否可以始终急于加载关联。比如说Ruby 始终与实体关联,ruby,activerecord,Ruby,Activerecord,在加载实体时,是否可以始终急于加载关联。比如说 class Book has_many :chapters end class Chapters belongs_to :book end book = Book.find_by_title('Moby Dick') 我知道您可以在调用find ie时急切地加载。按标题查找('Moby Dick',:include=>:chapters),但在这种情况下,我知道,每当我找到一本书时,我总是希望急切地加载章节,而不需要记住:includ
class Book
has_many :chapters
end
class Chapters
belongs_to :book
end
book = Book.find_by_title('Moby Dick')
我知道您可以在调用find ie时急切地加载。按标题查找('Moby Dick',:include=>:chapters),但在这种情况下,我知道,每当我找到一本书时,我总是希望急切地加载章节,而不需要记住:include=>
参数。您可以包含一个“默认范围”在你的模型中
对于Rails 4:
class Book
has_many :chapters
default_scope { includes(:chapters) }
end
对于Rails 3:
class Book
has_many :chapters
default_scope includes(:chapters)
end
对于Rails 2:
class Book
has_many :chapters
default_scope :include => :chapters
end
对于Rails 4:default\u scope{includes(:chapters)}
default\u scope{includes(:chapters)}
似乎不适用于我的Rails 4.2.x,并且抛出了一个错误数量的参数(0代表1)
,但是default\u scope->{includes(:chapters)}
为您工作过吗me@CyrilDD这是令人惊讶的——4.2.1的文档说,default\u scope{…}
仍然有效(即,您仍然可以向它传递一个块而不是一个proc)啊,我想我知道了,这可能是因为我使用的是Mongoid而不是ActiveRecord。因此,对于Mongoid用户,不允许使用任何块:(.编辑:是的,提及的默认范围只能是标准或过程