使用关系和返回关系之间的区别

Difference between using a relation and returning a relation

我有一个新手 Rails 关于使用关系和返回关系之间的区别的问题:

所以我有一个 Folder class has_many :files。最初,我在 Folder 的 ActiveRecord 文件中定义了以下内容:

def visible_files
   files.where(:hidden => false, :online => true)  # This returns a relation, right?
end

现在,假设我将其切换为显式关系:

has_many :visible_files
         :class_name => 'File',
         :conditions => 'hidden is false and online is true'

这两种方法有什么区别?我怀疑后者是首选,但我想知道为什么。优先选择其中一个是否有任何性能原因?

两者做同样的事情,只是方式不同:它们提供了一种获取所有可见文件和在线文件的方法。

has_many 版本的不同之处在于它提供了额外的关联内容,as documented in the "Associations Guide"。其中一些特征将存在于方法返回的关系上(例如 create),但其他特征(例如 build 则不会。