IT-Expert
  IT-Expert / Веблог / ez_where плагин не так прост в употреблении, как кажется на первый взгляд
Авторизация
Логин:
Пароль:


 
Поиск по записям:

Ключевые слова:
Записей в блоге
 за 2023 год
 за 2022 год
 за 2021 год
 за 2015 год
 за 2014 год
 за 2013 год
 за 2012 год
 за 2011 год

     за 2010 год

       за 2009 год
       за 2008 год
       за 2007 год
       за 2006 год
       за 2005 год
      RSS лента Лента новостей IT-Expert 

      ez_where плагин не так прост в употреблении, как кажется на первый взгляд

      09:49, 27 июля 2006 ( Web Development Ruby Rails  )

      Т.е. составить типичные вещи в нем просто, а вот, к примеру, мне нужно сделать отбор по вычисляемому полю, например, цене, которая складывается из цены за юнит умноженной на количество юнитов. Пока ны наю как это сделать.

      Вторая неприятность - все передаваемые в запрос значения переменных должны храниться в ЛОКАЛЬНЫХ переменных, а в @переменных это дело работать не будет, а жаль.

      А вот и пример моего "дикого запроса".

        def index
            session[:search]=params[:search] if params[:search]      search_params=SearchFilterParams.new(session[:search])
       
          @conditions=Caboose::EZ::Condition.new :lots  do
            region_id==search_params.region_id if search_params.region_id>0
            square<=>(Square.find_by_id(search_params.square.to_s).min_square.to_s .. Square.find_by_id(search_params.square.to_s).max_square.to_s)  if search_params.square>0
            price_per_square<Price.find_by_id(search_params.price_per_square).max_price.to_s if search_params.price_per_square>0
      #      full_price<FullPrice.find_by_id(search_params.full_price).max_price.to_s if search_params.full_price>0
            distance_to_city<CityDistance.find_by_id(search_params.distance_to_city).max_distance.to_s if search_params.distance_to_city>0
            placement_id==search_params.placement if search_params.placement>0
         end
      ## ай-яй-яй, некрасиво  
          @search=search_params
      ## должен прийти хеш   

      ## если заданы фильтры   
      # order by region_id,square, price_per_square*square, distance
           sort_init 'price_per_square'
           sort_update
          @lot_pages, @lots=paginate(:lots,
            :include=>['region', 'gas','electricity','water', 'lotroad_distance','departure'],
            :order=>sort_clause,
            :conditions=>@conditions.to_sql,
            :per_page=>3
          )
        end class SearchFilterParams
        attr :region_id
        attr :square
        attr :price_per_square
        attr :full_price
        attr :distance_to_city
        attr :placement
        def initialize(lparams={})
          @region_id=lparams[:region_id].to_i
          @square=lparams[:square].to_i
          @price_per_square=lparams[:price_per_square].to_i
          @full_price=lparams[:full_price].to_i
          @distance_to_city=lparams[:distance_to_city].to_i
          @placement=lparams[:placement].to_i
        end
      end


      Оставить комментарий
      © Максим Прокопов 2005-2024 О сервере