在 Rails 应用程序中,我在 has_many 声明中使用 :finder_sql 选项。rails 文档说,当我这样做时,“不添加 find_in_collection”。这是什么意思?
问问题
2111 次
2 回答
3
这意味着当您与表之间存在 has_many 关系时,例如:
人 has_many :books, :finder_sql
你不会得到你通常会得到的 person.books.find* 方法。这种行为的原因是 activerecord 无法轻松地使用您将使用的 find* 方法组合 finder_sql,因此它不能真正为您提供该功能
于 2009-02-04T00:31:04.760 回答
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.
于 2009-02-04T08:15:09.627 回答