我有三张桌子,coolercpusocketAcooler(支持)现在我要检查has_many是否支持sockets最简单的方法是什么?

@cooler.sockets.include? @cpu.socket # => False always no matter what

我尝试使用以下方法检查类型:
@cooler.sockets.class
#=> #Socket::ActiveRecord_Associations_CollectionProxy

最佳答案

您的代码:

@cooler.sockets.include? @cpu.socket

总是返回false,因为在这里您试图检查Cpu的model instancesocket属性是否包含在与Socket模型实例相对应的Cooler模型实例数组中,并且这永远不可能发生。
但是,您可以通过.exists?实现您想要的目标:
@cooler.sockets.exists?(socket: @cpu.socket)

.present?
@cooler.sockets.where(socket: @cpu.socket).present?

09-25 19:47