Rails:将值插入Mysql表

时间:2014-05-02 14:23:50

标签: mysql ruby-on-rails

我有一个表admin_users。名为AdminUser的模型。

架构是

    ActiveRecord::Schema.define(version: 20130915031734) do

  create_table "admin_users", force: true do |t|
    t.string   "first_name",      limit: 25
    t.string   "last_name",       limit: 50
    t.string   "email",           limit: 100, default: "", null: false
    t.string   "username",        limit: 25
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "password_digest"
  end

  add_index "admin_users", ["username"], name: "index_admin_users_on_username", using: :btree  

如何在表中插入值?

我试过了(下图)

使用rails console

enter image description here

3 个答案:

答案 0 :(得分:0)

最好使用db / seeds.rb文件并运行rake db:seed(或类似机制)来填充数据库。

在迁移过程中,您可以访问完整的应用程序环境。这意味着您可以使用模型类,但由于模型可能会随着时间的推移而发生变化,因此在迁移过程中引用它们并不是非常安全。在迁移中,您还可以使用execute方法执行任意SQL。

答案 1 :(得分:0)

使用文件db/seeds.rb,Rails为我们提供了一种方便快捷地将默认值提供给全新安装的方法。这是Rails环境中的普通Ruby程序。您可以完全访问应用程序的所有类和方法。 因此,您不需要使用rails控制台手动输入所有内容,以便在新的Rails应用程序中提供在名为“create”的部分中创建的记录,但您只需使用以下文件db / seeds.rb:

示例代码。

Country.create(name: 'Germany', population: 81831000)
Country.create(name: 'France', population: 65447374)
Country.create(name: 'Belgium', population: 10839905)
Country.create(name: 'Netherlands', population: 16680000)

除种子外,您可以使用迁移文件。

ActiveRecord::Schema.define(version: 20130915031734) do    
  create_table "admin_users", force: true do |t|
    t.string   "first_name",      limit: 25
    t.string   "last_name",       limit: 50
    t.string   "email",           limit: 100, default: "", null: false
    t.string   "username",        limit: 25
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "password_digest"
  end

  add_index "admin_users", ["username"], name: "index_admin_users_on_username", using: :btree

  /*Add your script here to insert some predifined value.*/
  AdminUsers.create(first_name: 'Nair', email: 'nair@gmail.com', username: 'nairg' )
  AdminUsers.create(first_name: 'Nair1', email: 'nair1@gmail.com', username: 'nairg1' )
  AdminUsers.create(first_name: 'Nair2', email: 'nair2@gmail.com', username: 'nairg2' )
  /*  ... So on as per your requirement */
end

生成种子文件Generating Seeds Blog

答案 2 :(得分:0)

你可以在控制器中创建create方法来保存数据,

def create
  @admin_user = Admin_user.new(admin_users_params)
  if @admin_user.save
    redirect_to :action => "index"  
   else
    render action: 'new'
   end
end
def admin_users_params
 params.require(:admin_user).permit(:first_name, :last_name, :email, :username)
end