好的,总而言之,您似乎有三个问题:
1.:据我所知,您在 db/migrations 中指定了模型字段数据类型。[...] 我的想法正确吗?这是rails中的常见做法还是我只是在使用解决方法?
是的,你是对的。字段数据类型不会显示在模型内部,只会在您的迁移中显示。
顺便说一句:我很少发现自己手动编写迁移文件。如果你使用 rails 命令,它会自动生成迁移文件。例如,如果您使用
rails g model User first_name:string last_name:string
这将创建一个名为 User 的模型,以及一个将创建一个包含 fields id
、first_name
、last_name
和 timestamp 字段的 users 表的迁移。如果您想稍后添加或删除列,有一个绝妙的技巧;赶紧跑
rails g migration add_fields_to_users field_name:field_type
或者
rails g migration remove_fields_from_users field_name
.
替换field_name
,field_type
和users
你认为合适的。此命令将为您创建迁移以添加或删除字段,因此您不必手动编写这些。
2.:另外,你如何在这个 db/migrations 文件中指定表关系。
你没有。Rails 通过 has_many、belongs_to、has_and_belongs_to 等关联方法为您处理此问题。请查看此 rails guide to active record associations。您需要在数据库端做的一件事是为一对多关系添加 foreign_id 列或为多对多关系创建连接表。例如,如果您有一个用户表和一个图片表,并且每张图片都属于一个用户,那么在您的用户模型中您将编写has_many :pictures
,在您的图片模型中您将编写belongs_to :user
,并且在您的图片表中您需要一个user_id
名为整数类型。
3.:如何验证我的迁移文件和模型文件没有任何语法错误。
你也没有。你只需运行rake db:migrate
,如果出现故障,它会告诉你在哪里以及为什么。如果你的模型有语法错误,它会告诉你什么时候启动你的服务器,或者什么时候运行你的测试,或者至少什么时候你在某个地方使用它(例如,当你调用一个模型的方法时)。如果您的意思是如何验证模型的数据,这完全是另一个问题 - 请参阅本指南活动记录验证和回调,其中详细解释了检查存在性、唯一性、长度等的验证。