0

私は最初のRailsアプリケーションを開発しようとしている最中であり、実際にアイデアを実装する前に、協会の計画について何らかの助けが得られることを望んでいました。

私のアプリケーションは教育ツールになり、実装する必要のある基本的な機能がいくつかあります。登録してコースを作成できる学生が欲しいです。これらのコースには、教師が1人、残りが学生のユーザーがいます。コース内には、教師が作成し、ユーザーが提出する必要のある課題が含まれます。これらが基本です。最終的にはもっと機能を追加したいのですが、今のところ必要なのは基礎を設定することだけです。

これまでのところ、協会がどのように見えるべきかについての私の考えは次のとおりです。

class User < ActiveRecord::Base
    has_many :enrollments
    has_many :courses, :through => :enrollments
end

class Course < ActiveRecord::Base
    has_many :enrollments
    has_many :users, :through => :enrollments
end

class Enrollment < ActiveRecord::Base
    belongs_to :user     # foreign key - user_id
    belongs_to :course   # foreign key - course_id
end

ただし、現時点では、残りのアソシエーションを適切に処理する方法について、経験不足の壁にぶつかっています。おそらく何かをハックアウトすることもできますが、最初はできる限り最善を尽くしたいと思います。

割り当てと提出に関連する関連付けをどのように処理しますか?おそらく、学生の提出物は彼らに属するべきですが、それは特にクラス内の課題にも関連しています。割り当てはコース内で発生しますが、ユーザーとも密接に関係しています。

最後に、ユーザーとユーザーが作成するクラスの間の関係を処理するための最良の方法は何ですか?ユーザーがコースを作成します。そのコースは彼らに属しますか?作成者のIDを格納するために、コースのテーブルに列を追加する必要がありますか?等。

助けてくれてありがとう。

4

1 に答える 1

3

提案: 教師モデルと生徒モデルを分離することをお勧めします。それぞれに異なるアクションが関連付けられている可能性が非常に高いためです (また、いくつかの属性を共有していますが、実際にはモデル内の異なるエンティティです。たとえば、コースで教える教師は 1 人だけです。) 共有属性と認証を持つ User モデルから Teacher モデルと Student モデルの両方を派生させることができます。

今あなたの質問に:

コースを作成した学生を関連付けたままにしたい場合は、creator_id を使用します。(教師もコースを作成できる場合は、共有 User モデルから Student と Teacher を派生させると役立ちます)

課題と提出物: ほぼ言葉で定義しました。これがコードです。[コース内の異なる学生が異なる課題を取得する可能性がある場合にのみ、学生と課題の間に直接の関連付けを作成しますか?そうでない場合は、スルー関連付けを使用します]

class User < ActiveRecord::Base
    has_many :enrollments
    has_many :courses, :through => :enrollments
    has_many :assignments, :through => :courses
    has_many :submissions
end

class Course < ActiveRecord::Base
    has_many :enrollments
    has_many :users, :through => :enrollments
    has_many :assignments
end

class Enrollment < ActiveRecord::Base
    belongs_to :user     # foreign key - user_id
    belongs_to :course   # foreign key - course_id
end

class Assignment < ActiveRecord::Base
    belongs_to :course
    has_many :submissions
end

class Submission < ActiveRecord::Base
    belongs_to :assignment
    belongs_to :user
end
于 2012-06-20T23:14:24.680 に答える