[英]How do you add JOIN information to a rails seeds.rb file?
我正在尝试构建一个seeds.rb 文件以将初始管理员用户添加到数据库中。 我有一个用户表和 model,以及一个角色表和 model。 我有一个连接表,roles_users 来加入用户角色和权限。 这是架构:
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 => "admin@domain.com", :password => "admin")
如何添加连接以授予管理员 super_admin 权限(正在使用的数据库是 sqlite3)?
假设您在用户 model 中定义了 has_and_belongs_to_many 关联:
has_and_belongs_to_many :roles, :join_table => "roles_users"
在您的种子.rb 文件中,您可以向用户添加角色,如下所示(此示例将所有角色添加到用户):
u = User.create(:first_name => "admin", :email => "admin@domain.com", :password => "admin")
Role.all.each { |role| u.roles << role }
要仅授予用户“super_admin”角色,您可以执行以下操作:
u = User.create(:first_name => "admin", :email => "admin@domain.com", :password => "admin")
u.roles << Role.find_by_name("super_admin")
通常我将对象保存到某个变量中:
#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
或者您可以在将它们推入关联数组时创建它们,因此无需传递这么多变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.