[英]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.