2011-05-01 16 views
6

मैं डेटाबेस में प्रारंभिक व्यवस्थापक उपयोगकर्ता जोड़ने के लिए एक seed.rb फ़ाइल बनाने की कोशिश कर रहा हूं। मेरे पास एक उपयोगकर्ता टेबल और मॉडल है, और एक भूमिका तालिका और मॉडल है। मेरे पास उपयोगकर्ताओं की भूमिका और अनुमतियों में शामिल होने के लिए टेबल, भूमिकाएं शामिल हैं।आप रेल बीजों.आरबी फ़ाइल में जॉइन जानकारी कैसे जोड़ते हैं?

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

    create_table "roles_users", :id => false, :force => true do |t| 
    t.integer "role_id" 
    t.integer "user_id" 
    end 

    create_table "users", :force => true do |t| 
    t.string "email",        :default => "", :null => false 
    t.string "encrypted_password", :limit => 128, :default => "", :null => false 
    t.string "reset_password_token" 
    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" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.string "first_name" 
    t.string "last_name" 
    end 

मैं प्रत्येक के लिए उपयोगकर्ता और भूमिकाओं repsective मॉडल का उपयोग कर जोड़ने का तरीका खोज निकाला है:

#Setup our default roles 
Role.create(:name => "super_admin") 
Role.create(:name => "school_leader") 
Role.create(:name => "school_staff") 
Role.create(:name => "student") 


#Setup and initial super admin user 
User.create(:first_name => "admin", :email => "[email protected]", :password => "admin") 

मैं कैसे व्यवस्थापक super_admin अनुदान बनाने के लिए शामिल होने को जोड़ने कर यहाँ स्कीमा है विशेषाधिकार (डेटाबेस का उपयोग किया जा रहा है sqlite3)?

उत्तर

3

मान लिया जाये कि आप अपने उपयोगकर्ता मॉडल में एक has_and_belongs_to_many संघ को परिभाषित किया है:

has_and_belongs_to_many :roles, :join_table => "roles_users" 

अपने seeds.rb फ़ाइल में, आप तो भूमिकाओं एक उपयोगकर्ता के लिए जिन्हें आप नीचे जोड़ सकते हैं (इस उदाहरण उपयोगकर्ता के लिए सभी भूमिकाओं कहते हैं):

u = User.create(:first_name => "admin", :email => "[email protected]", :password => "admin") 
Role.all.each { |role| u.roles << role } 

उपयोगकर्ता केवल 'super_admin की भूमिका प्रदान करने के लिए है, तो आप कुछ इस तरह कर सकता है:

u = User.create(:first_name => "admin", :email => "[email protected]", :password => "admin") 
u.roles << Role.find_by_name("super_admin") 
0

आमतौर पर मैं कुछ चर में वस्तुओं को बचाने:

#Setup our default roles 
supr = Role.create(:name => "super_admin") 
schl = Role.create(:name => "school_leader") 
schs = Role.create(:name => "school_staff") 
stut = Role.create(:name => "student") 


#Setup and initial super admin user 
admin = User.create(:first_name => "admin") 
johny = User.create(:first_name => "johny tables") 

तो के रूप में मैं सिर्फ साहचर्य सरणी में उन्हें धक्का:

admin.roles << supr << schl << schs 
johny.roles << stut 

या जब आप उन्हें साहचर्य में बढ़ा रहे हैं सिर्फ उन्हें बना सकते हैं सरणी, तो आसपास के इतने सारे चर पारित करने की कोई आवश्यकता नहीं होगी।

संबंधित मुद्दे