当前位置:  开发笔记 > 后端 > 正文

Rails架构创建问题

如何解决《Rails架构创建问题》经验,为你挑选了3个好方法。

我正在使用Jruby和rails 2.2.2.我的问题是我的迁移未正确写入数据库模式.

这是我的迁移:

class CreateNotes < ActiveRecord::Migration
  def self.up
    create_table(:notes, :options => 'ENGINE=MyISAM') do |t|
      t.string :title
      t.text :body

      t.timestamps
    end

    execute "alter table notes ADD FULLTEXT(title, body)"

end

这是它在schema.rb中生成的内容

create_table "notes", :force => true do |t|
  t.string   "title"
  t.text     "body"
  t.datetime "created_at"
  t.datetime "updated_at"
end

add_index "notes", ["title", "body"], :name => "title"

我有两个问题:

我如何'ENGINE=MyISAM'进入架构?

为什么我的执行声明变成了add_index "notes", ["title", "body"], :name => "title"?以及如何强制迁移将其作为执行语句保留?

感谢Christian Lescuyer的回答.但是,当我尝试这个没有改变.我取消注释了config.active_record ...行,但我的架构没有改变.我已经尝试了jruby和ruby 1.8.6上的rails 2.2.2和edge rails,架构没有变化.谁能告诉我我做错了什么?



1> Pete TerMaat..:

一旦我设置,我也期望看到一个新的.sql文件出现在"rake db:migrate"之后

config.active_record.schema_format = :sql

在config/environment.rb中.

然而,显然这不是它的工作方式.我必须明确地这样做以获取db/[development | test | production] _structure.sql文件:

rake db:structure:dump



2> Christian Le..:

当我使用外键约束时,我使用SQL格式进行迁移.在environment.rb中:

# Use SQL instead of Active Record's schema dumper when creating the test database.
# This is necessary if your schema can't be completely dumped by the schema dumper,
# like if you have constraints or database-specific column types
config.active_record.schema_format = :sql



3> Dave Foster..:

只是对Rails 3(目前的beta 4)上的更新--Christian的解决方案仍然是正确的,只有正确的放置行的位置config/application.rb,在Application类的范围内,应该在以Rails项目命名的模块中定义.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有