我有三个型号。 final String mimeType = "application/javafx-entrylist"; // TODO: choose properly
// use existing format or introduce new one
DataFormat f = DataFormat.lookupMimeType(mimeType);
final DataFormat format = f == null ? new DataFormat(mimeType) : f;
setOnDragDetected(event -> {
Dragboard db = startDragAndDrop(TransferMode.ANY);
ClipboardContent clipboardContent = new ClipboardContent();
clipboardContent.put(format, treeElement.getEntities());
db.setContent(clipboardContent);
System.out.println(db.getContent(format));
event.consume();
});
setOnDragDropped(event -> {
Dragboard db = event.getDragboard();
if (db.hasContent(format)) {
System.out.println(db.getContent(format));
System.out.println("Accept Drop");
}
event.consume();
});
有许多collection
到searches
。
当items
被销毁时,我希望其collection
被销毁,但items
无效,因为它们仍然是有效的对象。
可以这样做吗?
以下是我的模特:
searches
答案 0 :(得分:1)
你可以删除这些项目,只需将dependent: :destroy
添加到has_many :items
。
class Collection < ApplicationRecord
has_many :searches, through: :items
has_many :items, dependent: :destroy
end
销毁集合后,该项目将被销毁,但搜索仍会保留。
第二个解决方案
您甚至可以将dependent: :nullify
应用于has_many :searches
- 获得相同的结果。
class Collection < ApplicationRecord
has_many :searches, through: :items, dependent: :nullify
has_many :items
end
来自the docs:
collection.delete(object,...)
通过将其外键设置为
NULL
,从集合中删除一个或多个对象。如果对象与dependent: :destroy
相关联,则会另外销毁,如果与dependent: :delete_all
相关联,则会被删除。如果使用
:through
选项,则默认情况下会删除(而不是取消)联接记录,但您可以指定dependent: :destroy
或dependent: :nullify
来覆盖此。