在rails应用程序中,我在has_many声明中使用:finder_sql选项。 rails docs说,当我这样做时,“不添加find_in_collection”。这是什么意思?
答案 0 :(得分:3)
这意味着当你在表之间有一个has_many关系时,如:
人 has_many:books,:finder_sql
你不会得到你通常会得到的person.books.find *方法。 这种行为的原因是activerecord无法使用你将使用的find *方法轻松地组成finder_sql,所以它无法真正为你提供这种功能
答案 1 :(得分:3)
这意味着它不支持在集合中查找实例的方法。文档称之为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.