[英]Relating two tables with migration in Rails
将users
表与users_photos
表相关联。
我只是不知道该怎么做。
这是我表达的用于创建users_photos
表的命令行:
rails generate migration CreateUsersPhotos image_url:string thumbnail_url:string user:references
它创建索引user_id
,但没有任何外键。 我听说Rails不会创建外键,因为SQLite不支持该功能。 它继续,对吗? 也许外国人可以帮忙吧?
关键是:当我生成迁移并执行rake db:migrate
,会创建任何模型。 换句话说,只创建表,我无法与模型交互以向其添加外键。
rake db:migrate
,它不会创建模型。 为什么? users_photos
? 删除用户时,我需要删除user_photo
的条目。 迁移不会创建模型。 运行rails generate model UserPhotos ...
以创建迁移和模型。 否则,您需要手动创建模型。 不要担心外键,没有它们的轨道处理关联就好了。
我个人更喜欢在迁移中执行user_id:integer
,但是你拥有它的方式应该可行。 如果要将新模型记录与其父项一起删除,请使用
# User model has_many :user_photos, dependent: :destroy`
迁移和模型。 迁移与数据库模式有关:表,行和所有内容。 因此,rake db:migrate不会为您创建任何模型。 你需要自己做。 例如,像这样:
rails generate model User name:string
它将为您生成适当的模型和迁移(该迁移包含生成“用户”表的代码)。
外键。 你是对的。 Rails不会创建外键。 无论如何,有几种方法(raw sql)。 但这些都是糟糕的选择 。 你可以做的是将这种逻辑 (删除相关记录) 放在模型中 。 这是Rails协会指南的链接 。 您可以通过以下方式声明性地声明删除关联记录:
class User < ActiveRecord::Base
has_many :photos, dependent: :destroy
end
您可以指定外键,如用户有很多帖子,但在帖子中它保存为author_id
class User < ActiveRecord::Base
has_many :posts, dependent: :destroy, :foreign_key => :author_id
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.