2013-05-26 108 views
2

建立數據庫,我只是好奇,如果我做得正確,因爲它看起來有點關閉。有些人擁有用戶帳戶和角色(教師或學生)。他們是一個班的參與者(一個班有很多學生和老師,一個學生有很多班,一個班有很多班)。我想我的class_instruction模式是關閉的DB,但請告訴我,如果它會工作,或是否有更好的方法(如可能與參與者has_many_through表)學生和班級老師

schema.rb:

ActiveRecord::Schema.define(:version => 20130524160107) do 

    create_table "class_instructions", :force => true do |t| 
    t.string "name" 
    t.datetime "time" 
    t.datetime "created_at", :null => false 
    t.datetime "updated_at", :null => false 
    t.integer "person_id" 
    end 

    add_index "class_instructions", ["person_id"], :name => "index_class_instructions_on_person_id" 

    create_table "people", :force => true do |t| 
    t.string "firstName" 
    t.string "lastName" 
    t.integer "user_id" 
    t.datetime "created_at", :null => false 
    t.datetime "updated_at", :null => false 
    end 

    add_index "people", ["user_id"], :name => "index_people_on_user_id" 

    create_table "roles", :force => true do |t| 
    t.string "name" 
    t.datetime "created_at", :null => false 
    t.datetime "updated_at", :null => false 
    end 

    create_table "user_roles", :force => true do |t| 
    t.integer "user_id" 
    t.integer "role_id" 
    t.datetime "created_at", :null => false 
    t.datetime "updated_at", :null => false 
    end 

    add_index "user_roles", ["role_id"], :name => "index_user_roles_on_role_id" 
    add_index "user_roles", ["user_id"], :name => "index_user_roles_on_user_id" 

    create_table "users", :force => true do |t| 
    t.string "email",     :default => "", :null => false 
    t.string "encrypted_password",  :default => "", :null => false 
    t.string "reset_password_token" 
    t.datetime "reset_password_sent_at" 
    t.datetime "remember_created_at" 
    t.integer "sign_in_count",   :default => 0 
    t.datetime "current_sign_in_at" 
    t.datetime "last_sign_in_at" 
    t.string "current_sign_in_ip" 
    t.string "last_sign_in_ip" 
    end 

    add_index "users", ["email"], :name => "index_users_on_email", :unique => true 
    add_index "users", ["reset_password_token"], :name => "index_users_on_reset_password_token", :unique => true 

end 

我的擔心是person_id是班級的一部分。它是否正確?

ClassInsturction.rb:

class ClassInstruction < ActiveRecord::Base 
    belongs_to :people 
    has_many :cassignments 
    has_many :assignments, :through => :cassignments 

    def className 
    self.name 
    end 

    def classAssignments 
    return self.cassignments 
    end 
end 

回答

1

我會做一個既有班級又有人的連接表,並且有很多通過使用。如果人們有很多班級,班級中有很多人,那麼你不能以其他方式做到這一點。

+0

我不認爲你的用戶角色需要使用有很多通過。除非用戶既可以是老師也可以是學生。 –

1

我看到平時belongs_to的用單數形式:

belongs_to :person 

我不知道這是否是你所要求的不過。