我不是数据库和关系逻辑方面的专家,我对在以下情况下必须做什么感到有些困惑。
我有一个模型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]
我可以直接在模型声明中实现它还是必须实现一些自定义方法?