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)