使用铁轨铲操作员检查约束的可满足性

时间:2014-07-27 08:31:54

标签: ruby-on-rails associations

在我的rails应用程序中,我有一个与自身有多对多关系的组类。有问题的关系是"有子组。"

class Group
    has_and_belongs_to_many :subgroups, class_name: 'Group'
    ...
end

我正在使用铲运算符将一组组(作为子组)添加到特定组X.此问题中的约束是我们不应该在添加子组时形成任何循环,即我必须确保没有新成员已经是X组的祖先。

一个直接的答案是编写一个自定义的方法来做到这一点,这肯定是可能的,但我想知道是否可以使用铲子操作员而不是我自己的自定义功能实现这一点。

1 个答案:

答案 0 :(得分:0)

我认为使用铲运算符无法实现此行为。好消息是,由于关联“鸭子”就像一个数组,你可以使用union运算符和Array()转换输入,例如。

> group_a, group_b = Group.new, Group.new
> group_a.subgroups |= Array(group_b)