2016-11-12 83 views
0

我有一個模型命名爲和另一個名爲軌道LetterTracking自我協會保留相關記錄

class Letter < ApplicationRecord 
    has_many :letter_trackings, as: :trackable 
end 

和:

class LetterTracking < ApplicationRecord 
    belongs_to :letter 
    has_many :letter_trackings, as: :trackable 
end 

這是我的創造字母跟蹤的表遷移:

class CreateLetterTrackings < ActiveRecord::Migration[5.0] 
    def change 
    create_table :letter_trackings do |t| 
     t.integer :trackable_id, default: 0, null: false, unique: true 
     t.string :trackable_type 
     t.text  :paraph 
     t.string :status 
     t.string :assignee 
     t.belongs_to :letter 
     t.timestamps 
    end 
    end 
end 

你可以在下面的屏幕截圖中看到,當我選擇一個跟蹤記錄進行第二次跟蹤時,關係是可以的,但是當我添加跟蹤第二個關係的第三個字母時,關係就會消失,最後一個關係會保持關聯。 我想要的是保持在每個記錄中的信件跟蹤而不是最後一個。我的意思是像嵌套的記錄,我可以保留相關記錄的東西。 任何想法? 謝謝 enter image description here enter image description here

+0

你的相關控制器和視圖是怎樣的? – spickermann

+0

@ spickermann我還沒有開始生成控制器和視圖,但我只想通過Rails_admin進行管理 –

回答

0

首先作爲第二以爲多態性關係似乎用於跟蹤在這種情況下,完全無用。這裏最適合的東西是我想的基於樹的關係。 這是我LetterTracking.rb

class LetterTracking < ApplicationRecord 
    belongs_to :letter 
    has_many :children, class_name: "LetterTracking", foreign_key: "parent_id"        
    belongs_to :parent, class_name: "LetterTracking" 
end 

,這是我letter.rb

class Letter < ApplicationRecord 
    has_many :letter_trackings 
end 

和finaly的LetterTrackings遷移

class CreateLetterTrackings < ActiveRecord::Migration[5.0] 
    def change 
    create_table :letter_trackings do |t| 
     t.references :parent, index: true 
     t.text  :paraph 
     t.string :status 
     t.string :assignee 
     t.belongs_to :letter, index: true 
     t.timestamps 
    end 
    end 
end 

現在我可以擁有lettertrackings j的記錄oin像一棵樹一起在每一個記錄中保留字母id!是的:)