Ruby on rails Rails ActiveRecord替代ModelName.all

Ruby on rails Rails ActiveRecord替代ModelName.all,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,最近我一直在使用ModelName.where(nil)在某些情况下,我可能会使用ModelName.all 两者的区别在于前者返回ActiveRecord关系,而后者返回数组。我可以将查询链接到前者,但不能链接到后者。我很不高兴我失去了ModelName的自我记录特性。尽管如此 是否有类似于ModelName.all的方法返回AR关系并维护自身文档?ModelName.scoped将为您提供与默认范围的AR关系,ModelName.unscoped将在不使用默认范围的情况下提供AR关系。在这种

最近我一直在使用
ModelName.where(nil)
在某些情况下,我可能会使用
ModelName.all

两者的区别在于前者返回ActiveRecord关系,而后者返回数组。我可以将查询链接到前者,但不能链接到后者。我很不高兴我失去了
ModelName的自我记录特性。尽管如此


是否有类似于
ModelName.all
的方法返回AR关系并维护自身文档?

ModelName.scoped将为您提供与默认范围的AR关系,ModelName.unscoped将在不使用默认范围的情况下提供AR关系。在这种情况下,您可以使用
ModelName
,因为您不能使用
all
bcz它返回数组

例如

嗯,我通常使用

Model.find(:all, :conditions=>whatever, :order=>whatever,:limit=>whatever)

在您的情况下,可能Model.find(:all)会为您带来好处

where(nil)是始终返回关系的一个非常好的解决方法。可能在您不确定是否返回关系或类的情况下,您可以在ActiveRecord::Base上添加一个类方法,即def self.prepare;其中(无);结束。我不相信我可以单独枚举
ModelName
ModelName.each{obj |…}#没有为ModelName
定义的每个方法。与
ModelName.where(nil).each{…}
ModelName.all.each{…}
进行比较,以防我不需要更深入的范围。
Model.find(:all)
返回一个数组。你不能把它拴在上面。尝试
Model.find(:all).classMethod
查找
classMethod
Model
上定义的
classMethod
。我一直记得得到了一个活动记录对象数组,我认为这是必需的。我对这个问题的误解。谢谢你告诉我:)我不知道这些。知道肯定有用。我不确定我是否会使用这个,因为提到
unscoped
在关联上使用可能会很危险。也就是说,在我当前的项目中:
User.first.posts#=>[]
但是
User.first.posts.unscoped#=>所有帖子,由任何用户发布
Model.find(:all, :conditions=>whatever, :order=>whatever,:limit=>whatever)