如何通过关联Rails在has_many中进行查询

时间:2015-07-03 12:51:09

标签: ruby-on-rails rails-activerecord has-many-through

我有以下关联

Mobile.rb
has_many :mobile_networks, :dependent => :destroy

has_many :networks, :through => :mobile_networks

Network.rb
has_many :mobiles, :through => :mobile_networks


MobileNetwork.rb
belongs_to :mobile
belongs_to :network

我想查询移动设备的所有mobile_networks,然后我想检查所有网络是否有效,或者不是我已经在我的帮手中写了这个代码,我正在移动

    def mobile_state(mobile)
      mobile.mobile_networks.each do |e|
        e.network.is_checked #true
      end
   end

所以我需要在查询中执行此操作。请指导我如何做到这一点。

2 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

Mobile.joins(:networks).where(id: params[:id]).each do |m|
  m.networks.map(&:is_checked?)
end

答案 1 :(得分:0)

MobileNetwork.mobiles(params[:id]).joins(:network).merge(Network.checked)

class Network < ActiveRecord::Base
  scope :checked -> {
    where(is_checked: true)
  }
end

class MobileNetwork < ActiveRecord::Base
  scope :mobiles, ->(*m) {
    where(mobile_id: m.flatten.compact.uniq)
  }
end