我没有设置Rails环境,实际上很难找到快速解答,所以我会问专家。
当Rails根据您设置的“模型”创建表格时,Rails是否会创建一个完全镜像此模型的表格,还是会在表格中添加更多字段以帮助其发挥其魔力?如果是这样,它还添加了哪些其他字段?为什么?也许您可以剪切和粘贴表结构,或者只是将我指向一个解决此问题的文档或教程部分。
答案 0 :(得分:6)
如果您正在构建一个全新的应用程序,包括一个新数据库,那么您可以使用迁移构建整个后端。正在运行
ruby script/generate model User name:string
生成模型的user.rb文件和迁移:
class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.string :name
t.timestamps
end
end
def self.down
drop_table :users
end
end
您可以看到,默认情况下,生成脚本为(已创建和上次更新)添加“时间戳”,如果允许它们保持存在,则会自动管理它们。
不可见,但重要的是,创建一个额外的列“id”作为单个主键。但这并不是类似的 - 您可以在模型中指定自己的主键,这在您使用旧架构时非常有用。假设您保留 id 作为密钥,那么Rails将使用可用于新密钥值的任何特定于RDBMS的功能。
答案 1 :(得分:5)
在ActiveRecord中,模型是从数据库表创建的,而不是相反。
您可能还想查看迁移,这是一种从Ruby代码描述和创建数据库的方法。但是,迁移与模型无关;模型仍然是在运行时根据数据库的形状创建的。
在Rails网站上有与ActiveRecord和Migrations相关的截屏视频:http://www.rubyonrails.org/screencasts
答案 2 :(得分:1)
Here是ActiveRecord的官方文档。它同意布拉德的看法。您可能已经看到了不同的访问方法或迁移(这会改变表格,从而改变模型)
答案 3 :(得分:1)
我有一点经验将遗留数据库迁移到Rails并从外部脚本访问Rails数据库。这听起来像你想要做的。我的经验是在基于MySQL构建的Rails数据库中,因此您的里程可能会有所不同。
一个隐藏字段是最明显的 - “Rails”用作默认主键的“id”字段(整数)。除非另行指定,否则Rails中的每个模型都有一个“id”字段,该字段是唯一的递增整数主键。这个“id”字段将自动出现在Rails中通过迁移生成的任何模型中,除非您告诉Rails不要这样做(通过指定另一个字段作为主键)。如果你使用Rails本身以外的Rails数据库,你应该注意这个值。
“id”字段是Rails魔术的关键部分,因为它用于定义Rails的关联。假设您将两个表联系在一起---组和人。 Group模型将具有“id”字段,Person模型应该具有其自己的“id”字段和关系的“group_id”字段。 “group_id”中的值将引用相关组的唯一ID。如果您以遵循Rails惯例的方式构建模型,则可以通过说组模型“has_many:people”和Person模型“belongs_to:group”来利用Rails的关联。
默认情况下,Rails迁移还希望添加“created_at”和“updated_at”字段(所谓的“时间戳”),这些字段是日期时间字段。默认情况下,这些利用了数据库中的“魔力” - 而不是Rails本身 - 在创建或修改记录时自动更新。我不认为这些列会让你失望,因为它们应该在数据库级别处理,而不是任何特殊的Rails魔法。