Найти по количеству - PullRequest
1 голос
/ 26 мая 2010

Допустим, у меня есть модель

Vehicle

и это

has_many :wheels

Как правильно вывести /: условие => ... утверждение, чтобы найти только автомобили с 3 или более колесами, например, трехколесные велосипеды, автомобили, грузовики, цистерны и т.д ...?

1 Ответ

3 голосов
/ 26 мая 2010

Не то же самое, но я думаю, что вы можете решить свою проблему с помощью ответов на этот вопрос: Использование named_scope с количеством дочерних моделей

Короче говоря:

Добавить столбец wheels_count в таблицу транспортных средств

class Wheel < ActiveRecord::Base
  belongs_to :vehicle, :counter_cache => true # this will autoupdate the wheels_count on Vehicle
end

Теперь вы можете искать свой автомобиль по кол-ву колес:

# for all Vehicles with 4 Wheels
Vehicle.all(:condition => { :wheels_count => 4 })
# or for all Vehicles with more than 3 Wheels
Vehicle.all(:condition => ["wheels_count > ?", 3])

Обновление:

class AddWheelCount < ActiveRecord::Migration
  def self.up  
    add_column :vehicles, :wheels_count, :integer, :default => 0  

    Vehicle.reset_column_information  
    Vehicle.all.each do |p|  
      p.update_attribute :wheels_count, p.wheels.length  
    end  
  end  

  def self.down  
    remove_column :vehicles, :wheels_count  
  end
end

Таким образом, wheel_count установлен на текущий счетчик

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...