有没有更好的方法在Rails中以一对多的关系返回孩子们的“兄弟姐妹”?假设已经建立了标准关联。
例如,现在我会做类似的事情:
child.parent.children
或者,要排除当前记录,
child.parent.children - [child]
这感觉有点脏(Demeter违规?)......是否有更可接受的最佳做法?
答案 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
完全如上