私の質問は少し曖昧であることは理解していますが、他にどのように説明すればよいかわかりません。私は多くの場所で尋ねましたが、なぜ私がこれをしたいのか誰も理解していないようです。でもご容赦ください。なぜこんなものが欲しいのか説明します。
私はLiquidTemplatesを使用して、ユーザーが自分のサイトに動的なページを作成できるようにしています。そして、知らない人のために、LiquidはLiquidDropと呼ばれる彼らのクラスを使用して特定のアイテムをユーザーに公開します。ドロップ内の任意のメソッドは、Liquidテンプレートから呼び出すことができます。
クラスPageDrop<Liquid:: Drop def initialize(page) @page=ページ 終わり def名 @ page.name 終わり defの子 PagesDrop.new(@ page.children) 終わり 終わり
クラスPagesDrop<Liquid:: Drop def initialize(pages) @pages=ページ 終わり def group_by GroupByDrop.new(@pages) 終わり def all @ pages.all 終わり デフサイズ @ pages.size 終わり 終わり
たとえば、私はこれを実行できるようにしたいです:
@page_drop = PageDrop.new(@page) @ page_drop.children#子の配列を取得するには
それ以外の
@ page_drop.children.all
ページをドロップするのはなぜですか?
ページの配列に対して実行できるメソッドと、単一のページに対して実行できるメソッドを明確に分割できるようにしたいためです。これにより、次のようにページをグループ化できます。
@ page_drop.children.group_by.some_method_here_that_the_group_drop_contains
ユーザーにとって簡単にするために、ドロップインスタンスに「すべて」を追加するかどうかを考えて、そこに含まれる「デフォルト」オブジェクトを取得する必要はありません。繰り返しますが:
@pages_drop = PagesDrop.new(Page.all) @pages_drop == @ pages_drop.pages#これを真にしたいと思います。 @pages_drop == @ pages_drop.all
このアイデアはどこで得たのですか?
Railsでは、スコープ(関連付けオブジェクト)(@ person.friends)は、特定の処理を行うと配列を返すように見えます:@ person.friends.each、@person.friendsの人の場合