Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails迁移中加载数据_Ruby On Rails_Migration - Fatal编程技术网

Ruby on rails 在Rails迁移中加载数据

Ruby on rails 在Rails迁移中加载数据,ruby-on-rails,migration,Ruby On Rails,Migration,我创建了大量迁移,从Posts表的定义开始 class CreatePosts < ActiveRecord::Migration def self.up create_table :posts do |t| t.column "title", :string, :limit => 100, :default => "", :null => false t.column "content", :text, :null => fa

我创建了大量迁移,从Posts表的定义开始

class CreatePosts < ActiveRecord::Migration
  def self.up
    create_table :posts do |t|
      t.column "title", :string, :limit => 100, :default => "",  :null => false
      t.column "content", :text, :null => false
      t.column "author", :string, :limit => 100, :default => 0,  :null => false
      t.column "category", :string, :limit => 20, :default => "",  :null => false
      t.column "status", :string, :limit => 20, :default => "",  :null => false
      t.timestamps
    end
  end

  def self.down
    drop_table :posts
  end
end

我应该如何加载默认的BlogPost而不是“BlogPost.create”?

将重命名表和更改/重命名列迁移分离到另一个迁移文件中


我不认为重命名是在整个块通过之后提交的。。。因此,博客帖子还不存在。

将重命名表和更改/重命名列迁移分离到另一个迁移文件中


我不认为重命名是在整个块通过之后提交的。。。因此,博客帖子还不存在。

你的解释很有道理。我按照你说的做了,并创建了一个LoadDefaultData迁移文件,它将在所有其他文件之后生效。但是我得到了一个错误:“BlogPost.create”的“uninitialized constant LoadDefaultData::BlogPost”。这个文件的代码与我上面列出的代码相同:bopeep=User.find_by_username'bopeep'BlogPost.create(:title=>'test',:content=>'test',:author_id=>bopeep.id,:category=>'test',:status=>'ok'),你已经有了blog_post.rb模型了吗?如果您进入脚本/控制台,并执行BlogPost.create(:title=>'test',:content=>'test',:author\u id=>bopeep.id,:category=>'test',:status=>'ok'),您会遇到数据库错误还是rails错误?“而且您已经有blog\u post.rb模型了?”糟糕。我以为AlterPosts会为blog_post创建新的模型。相反,我只是找到了post.rb。现在工作。谢谢!你的解释有道理。我按照你说的做了,并创建了一个LoadDefaultData迁移文件,它将在所有其他文件之后生效。但是我得到了一个错误:“BlogPost.create”的“uninitialized constant LoadDefaultData::BlogPost”。这个文件的代码与我上面列出的代码相同:bopeep=User.find_by_username'bopeep'BlogPost.create(:title=>'test',:content=>'test',:author_id=>bopeep.id,:category=>'test',:status=>'ok'),你已经有了blog_post.rb模型了吗?如果您进入脚本/控制台,并执行BlogPost.create(:title=>'test',:content=>'test',:author\u id=>bopeep.id,:category=>'test',:status=>'ok'),您会遇到数据库错误还是rails错误?“而且您已经有blog\u post.rb模型了?”糟糕。我以为AlterPosts会为blog_post创建新的模型。相反,我只是找到了post.rb。现在工作。谢谢!
class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.column "username", :string,     :limit => 25, :default => "",   :null => false
      t.column "hashed_password", :string,  :limit => 40, :default => "", :null => false
      t.column "first_name", :string,   :limit => 25, :default => "",   :null => false
      t.column "last_name", :string,    :limit => 40, :default => "",   :null => false
      t.column "email", :string,        :limit => 50, :default => "",   :null => false
      t.column "display_name", :string, :limit => 25, :default => "",   :null => false
      t.column "user_level", :integer,  :limit => 3,  :default => 0,   :null => false
      t.timestamps
    end
    user = User.create(:username => 'bopeep',
      :hashed_password => 'bopeep',
      :first_name => 'Bo',
      :last_name => 'Peep',
      :email => 'bo@peep.com',
      :display_name => 'Little Bo Peep',
      :user_level => 9)
  end

  def self.down
    drop_table :users
  end
end
class AlterPosts < ActiveRecord::Migration
  def self.up
    rename_table :posts, :blog_posts
    change_column :blog_posts, :author, :integer, :default => 0, :null => false
    rename_column :blog_posts, :author, :author_id
    add_index :blog_posts, :author_id
    bopeep = User.find_by_username 'bopeep'
    BlogPost.create(:title => 'test', :content => 'test', :author_id => bopeep.id, :category => 'test', :status => 'ok')
  end

  def self.down
    remove_index :blog_posts, :author_id
    rename_table :blog_posts, :posts
    rename_column :posts, :author_id, :author
    change_column :posts, :author, :string, :limit => 100, :default => 0, :null => false
  end
end
uninitialized constant AlterPosts::BlogPost