我不是数据库和关系逻辑方面的专家,我对在以下情况下必须做什么感到有些困惑。
我有一个模型Expression
,我想在其中实现TranslationPair
自引用多对多关系。
class Expression
include DataMapper::Resource
has n, :translation_pairs, child_key: [:exp_1_id]
end
class TranslationPair
include DataMapper::Resource
belongs_to :exp_1, 'Expression', key: true
belongs_to :exp_2, 'Expression', key: true
end
问题是我希望translation_pairs
关系不仅返回字段TranslationPair
中具有给定表达式的实例exp_1
,还返回字段中具有给定表达式TranslationPair
的实例exp_2
(如果expression1
是 的翻译expression2
,则expression2
是 的翻译expression1
)。期权中的一种析取child_key
。就像是:
has n, :translation_pairs, child_key: [:exp_1_id] or [:exp_2_id]
我可以直接在模型声明中实现它还是必须实现一些自定义方法?