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

时间:2015-01-08 19:37:15

标签: ruby-on-rails ruby-on-rails-3 activerecord

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

所以我有Folderhas_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'

这两种方法有什么区别?我怀疑后者是首选,但我想知道原因。是否有任何表现理由让他们更喜欢一个?

1 个答案:

答案 0 :(得分:1)

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

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