Mysql Rails依赖于非关联对象

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 | +

我有两张桌子文章和书签。我想定义它们之间的关联

articles表中有“doi”列,用于书签表

文章:

| 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