2011-12-15 14 views
2

私はRuby on Rails 3.1で初めてのアプリケーションを作っています....これらの関係は正しく設定されていますか?基本的に、学生/クライアントはログインして教師を評価することができます。クライアントは多くの教師を持つことができ、教師は多くのクライアントを持つことができます。各クライアントは、特定の教師の評価を作成できます(教師はクライアントを評価できません)。評価はオプションです。Ruby on Rails 3.1:この関係を正しく設定していますか?

私は、さまざまなクライアントからの教師の評価を表示し、クライアントがログインしているすべての教師を評価できるようにするつもりです。

class Client < ActiveRecord::Base 
    has_many :ratings 
    has_and_belongs_to_many :teachers 
end 

class Teacher < ActiveRecord::Base 
    has_many :ratings 
    has_and_belongs_to_many :clients 
end 

class Rating < ActiveRecord::Base 
    belongs_to :teacher 
    belongs_to :client 
end 

答えて

4

私はあなただけのモデルを結合するために、データベースのテーブルではなくRailsのモデルを持っている場合has_and_belongs_to_manyの使用量が使用されるべきであると言うだろう。あなたのケースでは、あなたが評価と呼ばれるモデルを持っているので、私はhas_many, :throughを使用する方が良いと言うでしょう。

はこのように見て、あなたの教師とクライアントのモデルを変更して、それを達成するには、次の

class Client < ActiveRecord::Base 
    has_many :ratings 
    has_many :teachers, :through => :ratings 
end 

class Teacher < ActiveRecord::Base 
    has_many :ratings 
    has_many :clients, :through => :ratings 
end 

評価モデルは、任意の変更を必要としません。

+0

ありがとう、私はあなたがhas_manyを使うことができないと思っていたので、私は問題を抱えていたと思う:クライアントが先生を評価しない可能性があるからだ。 –

関連する問題