我有三张桌子,cooler
,cpu
,socket
Acooler
(支持)现在我要检查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?