1
私はRailsの3を使用しています

に参加し、学生が、私は以下のクエリを思いついたけどなかったRailsのクエリハムステッドを使用し、複数のモデル

class Student 
    has_many :students_levels 
    has_many :levels, :through => :students_levels 
    end 

    class Class 
    has_many :classes_levels 
    has_many :levels, :through => :classes_levels 
    end 

    class Level 
    has_many :students_levels 
    has_many :classes_levels 
    end 

    class StudentsLevel 
    belongs_to :students 
    belongs_to :levels 
    end 
    class ClassesLevel 
    belongs_to :classes 
    belongs_to :levels 
    end 

以下のモデルに基づくへのアクセス権を持つクラスを取得したいですそれがRailsのやり方のように思えて、追加の提案を得たいと思っていました。 THX

Class.where(:id => (ClassesLevel.where(:level_id => Student.find(1).levels))) 

は、私が学生のインスタンスメソッドとしてこれを追加したいと通じ、多くを持っていると何かをするより良い方法があるだろうと考えました。

+3

ちょうどヒント: 'クラス'と呼ばれるクラス名は、多くの問題につながる可能性があります。 – hade

答えて

0

私はかなりあなたのクラス構造の背後にある論理を理解していませんでした。なぜ学生をクラスに直接接続していないのですか?そして、どのようにしてクラスは多くのレベルを持つことができますか?私はあなたがMath1とMath2を持っていれば、それらは異なるクラスである、ということですか?または、数学1,2,3をお持ちですか?

まあ、とにかく、ここでの解決策は、あなたが現在assosiationsを使用したい場合は、私はそれはあなたのニーズにスイートを願っています:...

Class Student  
... 
def available_classes 
    Class.find(:all, 
     :include => {:levels => {:students_levels => :student}}, 
     :conditions => ["students.id = ?", self.id]) 
    end 

そして申し訳ありませんが、これはRailsの2.x形式のままです

+0

@ジョー、これで運がいい? – hade

関連する問題