2009-06-27 16 views
2

ワウクレイジータイトル!しかし、ここに問題があります。学校のWebサイト管理システムのアプリケーションを枯渇させるため、アプリケーション(FileSet)のモジュールを安心して1か所に配置しました。以前はFileSetは一般的なウェブサイトシステムで使用されていましたが、子供の学習領域システムでも使用されていました。彼らは1つのニュアンスを除いて全く同じように動作しました。キッズエリアでは、FileSetファイルはスタートアップとノーマルの2つのカテゴリに分けられました。スタートアップファイルは教師が作ったもので、普通のものは子供が作ったものです。今、一般的なウェブサイトアプリでは、この区別は関係がないので無視されます。ここには厳しい部分があります。私は両方のコンテキストで同じコントローラとビューを使用したいと思います。実行時には、ファイルセットが一般的なサイトまたはこの学習エリアに属していることがわかります。学習エリアのコンテキストにある場合は、FileSet.find(x).filesに '通常の名前付きスコープです。コンテキストが通常のWebサイトの場合、名前付きスコープはまったく使用されません。ランタイムコンテキストに基づいて検索条件を設定する

私は上記の情報を単純化しましたが、基本的にはFileSet.find(x).filesを呼び出してファイルメソッドを実行時コンテキストに基づいて返される結果を絞り込むにはどうすればいいですか?

私は関連付けの拡張を少し調べましたが、それは仕事をしていないようです。私はここに何かが存在することを望んでいる。私は必然的にこのロジックをモデルに保持し、それに関連するビューまたはコントローラを持たないようにしています。これらは、実行時に評価された場合は、デフォルトのスコープは、御馳走を動作します:)

をいくつかの提案を楽しみにしています:)

乾杯、

Brendonの

答えて

2

あなたはそのPROCで命名スコープを使用することができます現在のコンテキストを決定し、適切な条件を返しますか?ファイル内のこのような 何か:

named_scope :for_context, :conditions => lambda { 
    if only_normal? 
    { :type => 'normal' } 
    elsif only_startup? 
    { :type => 'normal' } 
    else 
    {} 
    end 
} 

は、あなたが呼び出すことができます。

FileSet.find(x).files.for_context 
+0

おかげアーサーは、それはおそらくな方法であることがあります。私はちょうどコントローラの条件(ユーザーが管理領域にいるかどうかにかかわらず)に基づいてフィルタリングする必要があることに気がついたので、スコープを呼び出して現在のコンテキストを渡す必要があります:)あなたの提案をありがとう: ) –

関連する問題