我有两张桌子。 '文章'和'书签'。我想定义它们之间的关联。
文章表中有'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来引用书签表中的文章。现在,我想在article_doi列中删除具有该特定文章的doi的所有书签(删除文章时删除所有书签)。我怎样才能做到这一点?
是否有必要在文章表'doi'和书签表'article_doi'中使用相同的名称作为外键?
答案 0 :(得分:0)
我认为你只需要使用“foreign_key”选项
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
来源:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html
答案 1 :(得分:0)
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