gpt4 book ai didi

ruby-on-rails - 如何将 JOIN 信息添加到 rails seeds.rb 文件中?

转载 作者:数据小太阳 更新时间:2023-10-29 07:07:39 27 4
gpt4 key购买 nike

我正在尝试构建一个 seeds.rb 文件以将初始管理员用户添加到数据库中。我有一个用户表和模型,以及一个角色表和模型。我有一个连接表,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

我已经想出如何使用每个 repective 模型添加用户和角色:

#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)?

最佳答案

假设您在用户模型中定义了 has_and_belongs_to_many 关联:

has_and_belongs_to_many :roles, :join_table => "roles_users"

在您的 seeds.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")

关于ruby-on-rails - 如何将 JOIN 信息添加到 rails seeds.rb 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5851860/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com