在Active Record中返回兄弟姐妹(child.parent.children)

时间:2014-10-13 19:10:04

标签: ruby-on-rails activerecord

有没有更好的方法在Rails中以一对多的关系返回孩子们的“兄弟姐妹”?假设已经建立了标准关联。

例如,现在我会做类似的事情:

child.parent.children

或者,要排除当前记录,

child.parent.children - [child]

这感觉有点脏(Demeter违规?)......是否有更可接受的最佳做法?

1 个答案:

答案 0 :(得分:6)

据我所知,没有开箱即用的方法。

不会激进,但这是更可接受的,在某种意义上不会转换你的输出

child.parent.children.where.not(id:child.id)

另一种使其可用于对象的方法,在Model(child.rb)定义中:

def siblings
    parent.children.where.not(id:self.id)
end

然后你会:

child.siblings

完全如上