2016-11-01 6 views
1

私は2つのテーブルを持っています。 「記事」と「ブックマーク」。私はそれらの間の関連付けを定義したいと思います。関連のないオブジェクトでRails依存の破壊

記事テーブルにはブックマークテーブルで使用される「doi」列があります。

記事:

| doi| varchar(255) | YES | MUL | NULL | 

ブックマーク:私はブックマークテーブルの資料を参照するために、物品のIDを使用することはできませんいくつかの理由から

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

。今度はarticle_doi列の特定の記事のdoiを持つすべてのブックマークに依存破壊を追加したい(記事が削除されるとすべてのブックマークを削除する)。それをどうすれば実現できますか?

記事テーブル 'doi'とブックマークテーブル 'article_doi'は外部キーとして同じ名前を使用する必要がありますか?

enter image description here

答えて

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

+0

を? – krishna

+0

article.rbにhas_many:bookmarks、class_name: 'ブックマーク'、foreign_key: 'article_doi'、依存する::破壊する。 bookmark.rb、belongs_to:article、class_name: '記事'、foreign_key: '記事_doi'。 これは、「article.bookmarks」または「bookmark.article」を実行すると、常にnilを返します。どうして? – krishna

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 
関連する問題