ограничения: finder_sql - PullRequest
       15

ограничения: finder_sql

2 голосов
/ 04 февраля 2009

В приложении rails я использовал опцию: finder_sql в объявлении has_many. В документации по rails говорится, что когда я делаю это, "find_in_collection не добавляется". Что это значит?

Ответы [ 2 ]

3 голосов
/ 04 февраля 2009

Это означает, что он не поддерживает метод поиска экземпляра в коллекции. Документы называют это find_in_collection (где «коллекция» - это название вашей ассоциации). Пример может быть более полезным здесь:

class Author < ActiveRecord::Base
  has_many :posts

  has_many :special_posts, :class_name => "Post", 
           :finder_sql => "SELECT * FROM posts WHERE ..."
end

author.find_in_posts(30)          # it finds and returns post 30
author.find_in_special_posts(30)  # not supported because finder_sql is used here.
3 голосов
/ 04 февраля 2009

это означает, что когда у вас есть отношение has_many к таким таблицам, как:

человек has_many: books,: finder_sql

вы не получите методы person.books.find *, которые вы обычно получили бы. причина такого поведения в том, что activerecord не может легко составить finder_sql с использованием методов find *, которые вы бы использовали, так что он не может действительно дать вам такую ​​функциональность

...