2015-01-08 4 views
2

У меня есть новичок Rails вопрос о разнице между использованием отношения и возвращает отношение:разница между использованием отношения и возвращает отношение

Так у меня есть класс Folder что has_many :files. Первоначально, я определил следующее в файле ActiveRecord для Folder:

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

Оба делают то же самое, только по-разному: они обеспечивают способ получения всех видимых и онлайн-файлов.

Что делает версия has_many, так это то, что она предоставляет дополнительную ассоциацию, as documented in the "Associations Guide". Некоторые из этих функций будут существовать по отношению, возвращаемому методом (например, create), но другие, такие как build, не будут.

Смежные вопросы