Railsアプリでは、has_many宣言で:finder_sqlオプションを使用しています。Railsのドキュメントには、これを行うと「find_in_collectionは追加されない」と書かれています。これは何を意味するのでしょうか?
質問する
2111 次
2 に答える
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 に答える
3
これは、次のようなテーブル間に has_many 関係がある場合を意味します。
person has_many :books, :finder_sql
通常なら得られるはずの person.books.find* メソッドは得られません。この動作の理由は、activerecord は、使用する find* メソッドを使用して finder_sql を簡単に作成できないため、実際にはその機能を提供できないためです。
于 2009-02-04T00:31:04.760 に答える