2

Railsアプリでは、has_many宣言で:finder_sqlオプションを使用しています。Railsのドキュメントには、これを行うと「find_in_collectionは追加されない」と書かれています。これは何を意味するのでしょうか?

4

2 に答える 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 に答える