Mysql Rails依赖于非关联对象
我有两张桌子文章和书签。我想定义它们之间的关联 articles表中有“doi”列,用于书签表 文章:Mysql Rails依赖于非关联对象,mysql,ruby-on-rails,associations,destroy,Mysql,Ruby On Rails,Associations,Destroy,我有两张桌子文章和书签。我想定义它们之间的关联 articles表中有“doi”列,用于书签表 文章: | doi| varchar(255) | YES | MUL | NULL | 书签: +-----------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +
| doi| varchar(255) | YES | MUL | NULL |
书签:
+-----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user_profile_id | int(11) | NO | MUL | NULL | |
| device_id | int(11) | NO | MUL | NULL | |
| article_doi | text | NO | | NULL | |
| disabled_at | varchar(255) | YES | | NULL | |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
+-----------------+--------------+------+-----+---------+----------------+
由于某些原因,我无法使用文章的id引用书签表中的文章。现在,我想将dependent destroy添加到在article_doi列中具有该特定文章doi的所有书签中(删除文章时删除所有书签)。我怎样才能做到这一点
文章表'doi'和书签表'article_doi'是否有必要使用相同的名称作为外键?
我想你只需要使用“外键”选项
类文章
来源:我想你只需要使用“外键”选项
类文章
来源:有没有一种方法可以在迁移文件中强制执行此操作?在article.rb中,有很多:书签、类名:“Bookmark”、外键:“article\u doi”、dependent::destroy。在bookmark.rb中,属于:article,类名:“article”,外键:“article\u doi”。当我执行“article.bookmarks”或“bookmark.article”时,它总是返回零。为什么?有没有一种方法可以在迁移文件中强制执行呢?在article.rb中,有很多:书签,类名:'Bookmark',外键:'article\u doi',dependent::destroy。在bookmark.rb中,属于:article,类名:“article”,外键:“article\u doi”。当我执行“article.bookmarks”或“bookmark.article”时,它总是返回零。为什么?
class Article < ActiveRecord::Base
has_many :bookmarks, dependent: :destroy, foreign_key: :article_doi
end
class Bookmark < ActiveRecord::Base
belongs_to :article, foreign_key: :article_doi
end
class Article
has_many :bookmarks, class_name: BookMarks, foreign_key: "article_doi", dependent: :destroy
end
class BookMark
belongs_to :article, class_name: Article, foreign_key: "article_doi"
end