2016-11-12 81 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!是的:)