.where를 사용하여 해당 속성을 사용하여 객체 (변형)를 찾으려는 경우 매개 변수 중 하나도 nil이 아닌 경우 쿼리가 작동하지만 그렇지 않으면 아무 것도 반환하지 않습니다..where는 nil 속성을 쿼리 할 때 nil을 반환합니다.
product.product_options.blank? ? options = [nil] : options = product.product_options
product.product_sides.blank? ? sides = [nil] : sides = product.product_sides
product.product_sizes.blank? ? sizes = [nil] : sizes = product.product_sizes
valid_variants = []
sides.product(sizes, options).each do |side, size, option|
side.blank? ? side_id = nil : side_id = side.id
size.blank? ? size_id = nil : size_id = size.id
option.blank? ? option_id = nil : option_id = option.id
valid_variants << product.variants.where(product_size_id: size_id, product_side_id: side_id, product_option_id: option_id).first
end
측면, 크기 및 옵션 IDS하지만 valid_variants가 비어 일치 변종을 포함 않습니다이 경우 product.variants에 : 여기 내 코드입니다.
를 좁은 방 (option_id : SIZE_ID, product_side_id : side_id, product_option_id product_size_id) 여기{"id"=>1, "product_side_id"=>nil, "product_size_id"=>1, "product_id"=>1, "created_at"=>Mon, 27 Jan 2014 16:28:46 UTC +00:00, "updated_at"=>Mon, 27 Jan 2014 16:28:46 UTC +00:00, "product_option_id"=>1}
{"id"=>2, "product_side_id"=>nil, "product_size_id"=>1, "product_id"=>1, "created_at"=>Mon, 27 Jan 2014 16:28:46 UTC +00:00, "updated_at"=>Mon, 27 Jan 2014 16:28:46 UTC +00:00, "product_option_id"=>2}
{"id"=>3, "product_side_id"=>nil, "product_size_id"=>2, "product_id"=>1, "created_at"=>Mon, 27 Jan 2014 16:28:46 UTC +00:00, "updated_at"=>Mon, 27 Jan 2014 16:28:46 UTC +00:00, "product_option_id"=>1}
{"id"=>4, "product_side_id"=>nil, "product_size_id"=>2, "product_id"=>1, "created_at"=>Mon, 27 Jan 2014 16:28:46 UTC +00:00, "updated_at"=>Mon, 27 Jan 2014 16:28:46 UTC +00:00, "product_option_id"=>2}
가 valid_variants 내용 product.variants.where를 사용 : 여기
는 product.variants의 내용 인 (: SIZE_ID, product_side_id : side_id, product_option_id : option_id product_size_id) ,369,136 여기[nil, nil]
는 valid_variants 내용 product.variants.where를 사용3210
[#<ActiveRecord::AssociationRelation []>]
결과 SQL 쿼리를 확인 했습니까 ?? 그것이 당신이 원하는 것과 일치하는지보기 위해서 ?? – bjhaid