写这篇博客的原因是国科大高级软件工程(罗老师的课)需要用ruby on rails,在rails入门时,rails官方指南(建一个简易博客)的英文读着吃力所以想一边翻译该指南,一边学习,中间因为有考试就停了一段时间,也就没翻译完,后来看到ruby-China的网站在这个链接https://ruby-china.org/topics中有rails教程https://rails.guide/book/getting_started.html#getting-started-with-rails,教程中的第一章就是本文的建一个简易博客教程(中文版),大家可移步这里学习,这篇博客不会再更新了。(祝大家学习顺利,早日成为编程好手,看到博客还有80+的浏览量,对我是一个很好的鼓励,谢谢!)

学习rails官方指南,建一个简易博客,指南地址:http://guides.rubyonrails.org/getting_started.html,这个指南包含的内容为ruby on rails的安装和运行,学习指南后你将知道:

1怎样去安装rails,怎样建立一个rails应用,怎样把应用和数据库关联;

2rails应用的一个大体布局(layout);

3MVC(Model-模型、View视图、Controller控制器)架构和RESTful架构的基本原则;

4怎样快速生成rails应用程序的起始部分(starting pieces);

1指南的前提:

本指南为想要从头开始(from scratch)使用rails应用程序的初学者而设计的。不需要你对rails有任何先前的经验。但是,要充分利用它,您需要安装一些先决条件:

1ruby语言版本2.2.2或更新版本的;

2如果用的是windows系统,需要正确版本的Development Kit;

3RubyGems包,ruby语言已默认安装;

4SQLite3数据库

Rails是一个运行在Ruby编程语言上的Web应用程序框架。如果你之前没有ruby经验,你会发现直接学习rails将是一个非常陡峭的曲线(比较难),下面是几个学习ruby的在线资源列表:

  • Official Ruby Programming Language website
  • List of Free Programming Books

要知道,有些资源,尽管还很棒,包括ruby1.6、1.8版本,将不会在包含因日益发展而出现在rails中的一些新语法规则;

2 什么是Rials

rails是一个用ruby语言写成的web应用开发框架.他的目的是让web应用的编程开发过程更简单,通过猜想大部分开发者在开始阶段需要写什么东西。和其他语言和框架相比,他让你能够写更少的代码的同时,能够实现更多工作。有经验的rails开发者说他也让web应用开发更加有趣。

rails是一个有主见的软件。他设想有一些最好的做事的方法,并且他被设计成鼓励这种方式-在一些情况下不鼓励有其他选择。如果你学习了“The Rails Way”,你可能会发现生产力的巨大提高。如果你坚持吧其他旧有的语言习惯带进rails开发中,并且尝试使用你在其他地方学习到的模式,你将经历一个不太开心的体验。

rails哲学包含两个主导原则:

1不要模仿你自己(DRY):DRY是一个软件开发原则,阐明了:每一片知识在一个系统内都有一个单独的、明晰的、权威的表述(representation)。不要把相同的信息一遍又一遍的重复,这样我们的代码才能更好的维护、更具有扩展性、更少bug。

2convention over configuration(约定配置):rails有关于web应用中怎样最好地做一些事情的主见,并默认这一套公约(convention),而不是要求你通过无尽的配置文件(configuration files)指定细节(specify minutiae)。

3创建一个新的rails项目

阅读这个指南的最好方法是一步一步跟着做。所有步骤对于运行这个样例项目都是至关重要的,并且不再需要有额外的编码或步骤。

通过跟随这个指南,你将创建一个称作blog的rails项目,一个(非常)简单的weblog。在你开始建立这个应用之前,你需要确保你已安装Rials。

下面的例子用$来表示你的类-UNIX操作系统(UNIX-like OS)的终端提示,尽管他可能被定制(customized)成以不同的方式出现。如果你用的是windows操作系统,你的提示会看起来像c:\source_code>

3.1安装rails

打开命令行,任何命令都会以一个美元符号$开头,这些命令都应该在命令行中执行。确认你有一个当前版本的ruby:

$ ruby -v
ruby 2.3.1p112

许多类-UNIX系统都装配有一个能够接受的SQLite3,确认你已经在你的路径中正确安装了sqlite3

$ sqlite3 --version

程序应报告他的版本

安装rails(不赘述了)

3.2创建blog应用

rails带有一些称作generator(生成器)的脚本,他们被设计用来使你的开发周期更简单,通过为开始处理一个特定任务所需要的一切来达成这一目的。其中一个是新应用generator,他将为你提供一个新rails应用的一个基础,这样你就不用自己去写了。

要使用这个generator,打开一个终端,切换到一个你有权限创建文件的目录下,并打出命令:

$ rails new blog

这将在blog目录下创建一个称作blog的rails应用,并且安装在Gemfile中提到的gem依赖,用命令:bundle install
您可以通过运行rails new -h来查看Rails应用程序构建器(rails application builder)接受的所有命令行选项。

建立了blog应用之后,切换到他的文件夹下:

$ cd blog

blog目录下有一些自动生成的文件和文件夹,他们组成了一个rails应用的结构。这个教程里的大多数工作都会在这个文件夹里进行,但是下面是Rails默认创建的每个文件和文件夹的基本(basic rundown基本的概要)功能:

file/folders(文件/文件夹 目的
app/ 包含了程序的控制器(controller)、模型(model)、视图(view)、mailers, channels, jobs 和 assets本指南的其余(remainder)部分将重点介绍此文件夹。
bin/ 包含启动您的应用程序的rails脚本,并且可以包含用于设置,更新,部署(deploy)或运行应用程序的其他脚本。
config/ config/配置您的应用程序的路由,数据库等。这在配置Rails应用程序中有更详细的介绍。
config.ru 用于启动应用程序的基于Rack的服务器的Rack配置。
db/ 包含您当前的数据库模式(schema)以及数据库迁移(migrations)。
Gemfile
Gemfile.lock
这些文件允许您指定Rails应用程序需要哪些gem依赖项。这些文件由Bundler gem使用。有关Bundler的更多信息,请参阅Bundler网站。
lib/ 为您的程序扩展模块
log/ 应用程序日志文件
public/ world as-is唯一能看到的文件夹。包含静态文件和编译的资产(assets)。
Rakefile 该文件定位并加载可以从命令行运行的任务。任务定义在整个Rails组件中定义。不要改变Rakefile,你应该添加你自己的任务,把文件添加到应用程序的lib / tasks目录下。
README.md 这是您的应用程序的简要说明手册。 你应该编辑这个文件来告诉别人你的应用程序做了什么,如何设置,等等。
test/ 单元测试,fixture和其他测试仪器apparatus。这些都在测试Rails应用程序中介绍。
tmp/ 临时文件(如缓存(cache)和pid文件)
vendor/ 所有第三方代码的地方。 在典型的Rails应用程序中,这包括了gems.
.gitignore 这个文件告诉git应该忽略哪些文件(或模式)。 请参阅Github - 忽略文件以获取有关忽略文件的更多信息。

4Hello Rails

首先,讓我們快速在屏幕上看到一些文字。要實現這個目的,你需要让你的Rails应用服务器运行起来。

4.1启动Web服务器

你实际桑已经有了一个功能性的Rails应用,要想看见他,你需要在你的开发机器(电脑)上启动一个Web服务器,你可以通过在Blog目录中运行下面这个命令来实现这一操作:

$ bin/rails server

这将启动Puma,一个默认情况下使用的由Rails分配的Web服务器。要查看您的应用程序,请打开浏览器窗口并导航到http:// localhost:3000。你应该看到rails的默认信息页面。
在其运行的终端窗口敲击Ctrl+C可以关闭该服务器。若服务器已经停止,您应该能再次看到您的命令提示符光标。对于大多数类-UNIX系统,包括MacOS,意味着将会出现一个美元标志$。在开发模式(development mode)下,Rails通常(generally)不会要求您重新启动服务器;您在文件中所做的更改将被服务器自动提取(pick up)。

“欢迎登机”(welcome aboard)页面是新的Rails应用程序的冒烟(smoke)测试:它确保您的软件配置(configured)正确,足以提供页面(server a page)。

4.2Say "Hello", Rails

为了让Rails说“你好”,你至少需要创建(create at minimum至少创建)一个控制器和一个视图。

控制器的目的是为了接受应用程序的特定请求(specific requests)。路由(Routing)决定哪个控制器接收哪些请求。通常情况下,每个控制器有多个路由,不同的路由可以通过不同的动作(action)来服务。 每个动作的目的是收集信息以提供一个视图。

视图的目的是以可供人们阅读的格式显示这些信息。 一个重要的区别是:是控制器收集信息,而不是视图。 该视图应该只显示该信息。 默认情况下,视图模板(view templates)是用eRuby(Embedded Ruby)语言编写的,在被发送给用户之前,Rails中的请求循环会处理这个语言。

要创建新的控制器,你需要运行“controller(控制器)”生成器,并告诉他你想要一个称作“Welcome”的控制器,并带有一个“index”动作,就像这样:

$ bin/rails generate controller Welcome index

rails将为你创建一些文件和一个路由

create  app/controllers/welcome_controller.rb
 route  get 'welcome/index'
invoke  erb
create    app/views/welcome
create    app/views/welcome/index.html.erb
invoke  test_unit
create    test/controllers/welcome_controller_test.rb
invoke  helper
create    app/helpers/welcome_helper.rb
invoke    test_unit
invoke  assets
invoke    coffee
create      app/assets/javascripts/welcome.coffee
invoke    scss
create      app/assets/stylesheets/welcome.scss

其中最重要的是控制器(位于app / controllers / welcome_controller.rb)和视图(位于app / views / welcome / index.html.erb)。

在文本编辑器中打开app / views / welcome / index.html.erb文件。 删除文件中的所有现有代码,并用下面的一行代码替换它:

<h1>Hello, Rails!</h1>

4.3设置应用程序主页
现在我们已经制作了控制器和视图,我们需要告诉Rails我们何时需要“Hello,Rails!”。 在我们的例子中,我们希望在导航到我们网站的根URL(http:// localhost:3000)时显示它。 目前,“欢迎登机”(welcome aboard)正在占据这个地方。

接下来,你必须告诉Rails你的实际主页(actual home page)在哪里。

在编辑器中打开文件config / routes.rb。

Rails.application.routes.draw do
  get 'welcome/index'
 
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end

这是您的应用程序的路由文件,其中包含特定DSL(域特定语言domain-specific language)中的条目(entries),这些条目告诉Rails如何将传入请求连接到控制器和操作。 编辑这个文件,加入一行代码root'welcome#index'。 它应该看起来如下所示:

Rails.application.routes.draw do
  get 'welcome/index'
 
  root 'welcome#index'
end

root 'welcome#index'告诉Rails将应用程序根目录的请求(即http:// localhost:3000)映射(map request)到welcome控制器的index操作(action),get 'welcome / index'告诉Rails将http:// localhost:3000 / welcome / index请求映射到welcome控制器的index操作(action)。后者是在运行controller生成器(bin / rails generate controller Welcome index)时创建的。

http:// localhost:3000 / welcome / indexwelcomecontroller的index操作http:// localhost:3000

两次映射操作

重新启动Web服务器(如果你停了他的话)以生成控制器,并在浏览器中导航到http:// localhost:3000。 你会看到你放入app / views / welcome / index.html.erb中的消息:“Hello,Rails!” ,这表示这个新路由确实将进入WelcomeController的index操作并正确地呈现视图。

5getting up and running

现在你已经看到了如何创建一个控制器(controller),一个动作(action)和一个视图(view),让我们创建一个更实质(substance)的东西。

在blog应用程序中,你将创建一项新的资源(resource),资源是用来描述相似对象的集合的一个术语,比如文章、人或动物。你可以对资源的项目(item)进行创建、读取、更新和销毁操作,这些操作被称为CRUD操作。

Rails提供了一个资源方法,可以用来声明一个标准的REST资源。您需要将文章资源添加到config / routes.rb,文件便如下所示:

Rails.application.routes.draw do
  get 'welcome/index'
 
  resources :articles
 
  root 'welcome#index'
end

如果您运行bin / rails routes(这个命令我执行的时候没有成功,error: command 'routes' not recongized),您将会看到它已经为所有标准的RESTful操作定义了路由。 前缀列(和其他列)的含义将在稍后看到,但现在注意到,Rails已经推断出单数形式的文章,并有意义地使用了区分。

$ bin/rails routes
      Prefix Verb   URI Pattern                  Controller#Action
    articles GET    /articles(.:format)          articles#index
             POST   /articles(.:format)          articles#create
 new_article GET    /articles/new(.:format)      articles#new
edit_article GET    /articles/:id/edit(.:format) articles#edit
     article GET    /articles/:id(.:format)      articles#show
             PATCH  /articles/:id(.:format)      articles#update
             PUT    /articles/:id(.:format)      articles#update
             DELETE /articles/:id(.:format)      articles#destroy
        root GET    /                            welcome#index

在下一节中,您将添加在应用程序中创建新文章并能够查看它们的功能。 这是来自CRUD的“C”和“R”:创建和读取。 这样做的形式如下所示:

现在看起来有点基本(basic),但没关系。 之后我们会考虑改进它的样式。

5.1Laying down the groundwork

首先,您需要在应用程序中创建一个新文章。 一个好的地方是/article/new。 通过已经定义的路线,现在可以在应用程序中对/ articles / new进行请求。 导航到http:// localhost:3000 / articles / new,您将看到路由错误:

发生此错误是因为路由需要定义一个控制器以便为请求提供服务。 解决这个问题很简单:创建一个名为ArticlesController的控制器。 你可以通过运行这个命令来做到这一点:

$ bin/rails generate controller Articles

如果你打开新生成的app / controllers / articles_controller.rb,你会看到一个相当空的控制器:

class ArticlesController < ApplicationController
end

控制器只是一个定义为从ApplicationController继承的类(class)。 在这个类里面,你将定义一些方法(method),这些方法将成为这个控制器的动作(action)。 这些操作将对我们系统内的文章执行CRUD操作。

Ruby中有公共,私有和受保护的方法,但只有公共方法可以是控制器的操作。 有关更多详细信息,请查阅Programming Ruby。

如果你现在刷新http://localhost:3000/articles/new你将得到一个新的错误:

这个错误表明Rails在你刚才生成的ArticlesController里面找不到新的动作。 这是因为当在Rails中生成控制器时,默认情况下它们是空的,除非在生成过程中将其告诉您所需的操作。

要在控制器中手动定义一个动作,您只需要在控制器中定义一个新的方法。

打开app/controllers/articles_controller.rb,在ArticlesController类中,定义新的方法,以便你的控制器现在看起来像这样:

class ArticlesController < ApplicationController
  def new
  end
end

使用ArticlesController中定义的新方法,如果刷新http:// localhost:3000 / articles / new,则会看到另一个错误:

你现在得到了这个错误,因为Rails希望像这样的简单的动作有与他们相关的视图来显示他们的信息。 没有可用的视图,Rails会引发异常。
在上图中,底线已被截断。 我们来看看完整的错误信息:

ArticlesController#new缺少此请求格式和变体的模板。 request.formats:[“text / html”] request.variant:[]注意! 对于XHR / Ajax或API请求,此操作通常会以204No Content:空的白色屏幕进行响应。 由于您正在将其加载到网络浏览器中,因此我们假定您期望实际渲染模板,而不是......Nothing,所以我们显示的错误是非常明显的。 如果你期望204No Content,继续。 这就是你会从XHR或API请求中获得的。 试一试。

这是相当多的文字!让我们快速浏览并理解它的每个部分是什么意思。

第一部分标识哪个模板丢失。在这种情况下,这是articles/new模板。 Rails将首先寻找这个模板。如果找不到,则会尝试加载名为application / new的模板。它在这里寻找一个,因为ArticlesController继承自ApplicationController。

消息的下一部分包含request.formats,它指定了作为响应的模板的格式。它被设置为text / html,因为我们通过浏览器请求了这个页面,所以Rails正在寻找一个HTML模板。 request.variant指定响应将使用哪种物理设备,并帮助Rails确定在响应中使用哪个模板。这是空的,因为没有提供任何信息。

在这种情况下最简单的模板将位于app / views / articles / new.html.erb。这个文件名的扩展名是很重要的:第一个扩展名是模板的格式,第二个扩展名是用于渲染模板的处理程序。 Rails试图在应用程序的app / views中找到一个叫articles / new的模板。这个模板的格式只能是html,HTML的默认处理程序是erb。 Rails使用其他处理程序来处理其他格式。构建器处理程序用于构建XML模板,咖啡处理程序使用CoffeeScript来构建JavaScript模板。既然你想创建一个新的HTML表单,你将会使用ERB语言,这个语言被设计用来将Ruby嵌入到HTML中。

因此该文件应该被称为articles / new.html.erb,并且需要位于应用程序的app / views目录中。

现在继续,在app / views / articles / new.html.erb上创建一个新文件,并在其中写入这个内容:

<h1>New Article</h1>

当你刷新http:// localhost:3000 / articles / new时,你现在会看到该页面有一个标题。 路由,控制器,action和view现在运作和谐! 现在是为新文章创建表单的时候了。

5.2 The first form(第一个表单)

要在此模板中创建表单,您将使用表单构建器。 Rails的主要表单生成器是由一个名为form_with的助手方法提供的。 要使用此方法,请将此代码添加到app / views / articles / new.html.erb中:

<%= form_with scope: :article, local: true do |form| %>
  <p>
    <%= form.label :title %><br>
    <%= form.text_field :title %>
  </p>
 
  <p>
    <%= form.label :text %><br>
    <%= form.text_area :text %>
  </p>
 
  <p>
    <%= form.submit %>
  </p>
<% end %>

如果您现在刷新页面,则会看到与上述示例完全相同的表单。在Rails中构建表单实际上就是这么简单!
当你调用form_with的时候,你会为它传递一个确定的范围。在这种情况下,它是符号:article。这告诉form_with助手这是什么形式。在此方法的块内部,FormBuilder对象(由form表示)用于构建两个标签和两个文本字段,分别用于文章的标题和文本。最后,调用表单对象将会为表单创建一个提交按钮。
这个表单有一个问题。如果您检查生成的HTML,通过查看页面的源代码,您将看到表单的action属性指向/ articles / new。这是一个问题,因为这个路径转到您目前正确的页面,而该路线只能用于显示新文章的表单。
该表单需要使用不同的网址(URL)才能去其他地方。这可以通过form_with的url选项来完成。通常在Rails中,用于这种新形式提交的操作称为“创建”,因此表单应指向该操作。
编辑app / views / articles / new.html.erb中的form_with行,如下所示:

<%= form_with scope: :article, url: articles_path, local: true do |form| %>

在这个例子中,articles_path helper被传递给:url选项。 要了解Rails将如何处理,我们回头看看bin / rails的输出:

$ bin/rails routes
      Prefix Verb   URI Pattern                  Controller#Action
    articles GET    /articles(.:format)          articles#index
             POST   /articles(.:format)          articles#create
 new_article GET    /articles/new(.:format)      articles#new
edit_article GET    /articles/:id/edit(.:format) articles#edit
     article GET    /articles/:id(.:format)      articles#show
             PATCH  /articles/:id(.:format)      articles#update
             PUT    /articles/:id(.:format)      articles#update
             DELETE /articles/:id(.:format)      articles#destroy
        root GET    /                            welcome#index

articles_path帮助器告诉Rails将表单指向与文章前缀关联的URI模式; 并且表单将(默认)发送一个POST请求到那个路由。 这与当前控制器ArticlesController的创建操作相关联。
通过定义表单及其相关路径,您将能够填写表单,然后单击“提交”按钮开始创建新文章的过程,请继续操作。 当您提交表单时,您应该看到一个熟悉的错误:

您现在需要在ArticlesController中创建create操作才能工作。

默认情况下,form_with使用Ajax提交表单,从而跳过整页重定向。 为了使本指南更容易进入,我们现在已经禁用了local:true。

5.3Creating articles(创建文章)

为了使“未知操作”消失,您可以在新操作下面的app / controllers / articles_controller.rb中的ArticlesController类中定义一个创建操作,如下所示:

rails官方指南--建一个简易博客相关推荐

  1. 如何建一个团队博客(宿舍四人为例)

    为构建一个寝室内部的博客用于纪录一些技术文章,准备搭建一个团队博客,但是目前网上教程较少,于是写了一个教程,这个教程总共有两种搭建方式,一种比较简单使用的是solo博客模板,但是自定义的东西实在太少, ...

  2. 手把手教你建github技术博客

    适合人群 喜欢写Blog的人 有一定的编程基础 爱折腾的人 熟练使用版本控制Git 了解使用Github 熟悉基本的MarkDown语法 环境准备 安装Git 下载 msysgit 并执行即可完成安装 ...

  3. 不会代码,如何搭建一个个人博客?

    本科的时候不是计算机专业,学的自动化,也不太上进,尽顾着玩游戏了.那会一直觉得那些写博客的人超级牛逼,能够搭建自己个人博客的人更是牛逼哄哄的啊~ 前段时间,研究生课题没那么忙的时候,折腾着搭建了一个自 ...

  4. Django搭建简易博客

    Django简易博客,主要实现了以下功能 连接数据库 创建超级用户与后台管理 利用django-admin-bootstrap美化界面 template,view与动态URL 多说评论功能 Markd ...

  5. md 生成目录 码云_搭建简易博客方案

    现在大家都喜欢用markdown来写技术博客,这篇文章将阐述搭建支持markdown的简易博客方法. 我的写作需求 通过阅读本文,您将学会搭建满足以下条件的博客: 博客只用书写markdown文件 能 ...

  6. 如何搭建一个独立博客——简明Github Pages与Hexo教程

    (?)[-] http://cnfeat.com/2014/05/10/2014-05-11-how-to-build-a-blog/ 摘要:这是一篇很详尽的独立博客搭建教程,里面介绍了域名注册.DN ...

  7. 在gitcafe下用hexo建的新博客

    看到别人用hexo建的静态博客,感觉还不错,也就跟着建了一个,似乎有跟风的嫌疑,主题也是用别人的,太懒了,有兴趣的时候再慢慢改变它吧,所以这个博客也许就冻结在这一刻了,又或许某天新博客蹦了,我还会回来 ...

  8. 全栈开发实战(一)——简易博客社区后端搭建教程(附源码)

    全栈开发实战(一)--简易博客社区后端搭建 项目展示视频 项目Github地址 (一)项目准备 在项目开始前,首先确保你已安装好Go语言并配置好Go语言编辑器,同时安装好MySQL或其他数据库,其次, ...

  9. PS网页设计教程IV——如何在Photoshop中创建一个专业博客网站布局

    向Talk-Mania网站致敬.一年前,在该网站上看过许多不错的网页设计教程.一年后,再回头想看看有没有什么新的教程的时候,蓦然发现该网站已经打不开了.也许是关闭了,也许是改了网站名了.幸好,去年本人 ...

最新文章

  1. map集合根据value找key,默认取第一个key
  2. python自学用什么书好-适合python基础学习的好书籍
  3. CHIL-SQL-FIRST() 函数
  4. DNS子域委派配置案例[转载]
  5. python语法总结下载_python语法总结1
  6. 从知识图谱到事理图谱 | CNCC 2017
  7. 最新cocoaPods安装、升级、卸载及删除库命令(持续更新)
  8. JUC多线程:创建线程的四种方式
  9. Angular 项目里 angular.json 文件内容的学习笔记
  10. 数据结构 - 二叉树
  11. linux wordpress伪静态,wordpress程序在win和Linux系统下的伪静态设置 - 张力博客
  12. 打开文件对话框的演练 c# 1614821885
  13. linux dd 清屏 of=/dev/mem,Linux系统简介分区基础命令(ADMIN01-2)(示例代码)
  14. HDU1722 Cake【GCD】
  15. C++模式-Proxy
  16. [已实现]暴力破解路由器管理密码
  17. 反馈抑制器设计的技术要点
  18. U盘格式化,教你如何将U盘格式化后速度变的更快
  19. 如何查看网络计算机ip,怎么查ip地址 如何查看(局域网/互联网)本机ip地址
  20. 编译工具make、gmake、cmake、nmake和Dmake的区别

热门文章

  1. 《伟大的小细节:互联网产品设计中的微创新思维》——3.6 基于当前场景的前因后果推演...
  2. 数据结构和机器学习哪个更难_如何通过更少的数据主动学习来做更多事情
  3. linux scp传输文件权限被拒绝,Linux的远程传输文件scp及出现Permission denied (publickey).lost connection问题解决方法...
  4. Appium 点击操作梳理
  5. The bean 'llWebSocketHandler' could not be injected because it is a JDK dynamic proxy that implemen
  6. 2012美国总统竞选赞助数据分析项目学习
  7. QT 在注释中遇到意外的文件结束
  8. 机器人系统设计与制作:Python语言实现2.5 用Blender制作机器人的三维模型
  9. Micro:bit篮球小游戏
  10. MIMIC IV数据库衍生表格配置