我有一个名为 Letter 的模型和另一个名为 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
正如您在下面的屏幕截图中看到的那样,当我为第二次跟踪选择跟踪记录时,关系是正常的,但是当我添加第三个字母跟踪时,第二个关系将删除,最后一个保持关联。 我想要的是保持每个记录中的字母跟踪而不是最后一个。我的意思是嵌套记录,我可以保留相关记录。 任何的想法 ? 谢谢
答案 0 :(得分: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
最终 LetterTrackings Migration :
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的记录像树一样连接在一起,同时在每个记录中保留字母ID!是的:)