복붙노트

[RUBY-ON-RAILS] 루비 레일에 : 어떻게 액티브를 사용하여 두 개의 열이 종류는 무엇입니까?

RUBY-ON-RAILS

루비 레일에 : 어떻게 액티브를 사용하여 두 개의 열이 종류는 무엇입니까?

나는 두 개의 열을 기준으로 정렬하려면, (가격) 하나는 날짜 시간 (updated_at는)이고, 다른 하나는 소수이다

나는 여러 항목이 같은 날에 발생하는 경우 종류의 가격에 의해, 다음, updated_at에 의해 처음으로 정렬 할 수 있도록하고 싶습니다.

해결법

  1. ==============================

    1.당신이 MySQL을 사용하고 가정,

    당신이 MySQL을 사용하고 가정,

    Model.all(:order => 'DATE(updated_at), price')
    

    다른 답변에서 구별을합니다. updated_at의 열은 종류가 업데이트 된 날을 기준으로 할 그렇다면, 풀 타임 스탬프 될 것입니다, 당신은 타임 스탬프에서 불과 날짜 부분을 얻을 수있는 기능을 사용해야합니다. MySQL의에서, 즉 DATE ()이다.

  2. ==============================

    2.레일 4에서는 비슷한 일을 할 수있는 :

    레일 4에서는 비슷한 일을 할 수있는 :

    Model.order(foo: :asc, bar: :desc)
    

    foo는 바는 DB를 열 수 있습니다.

  3. ==============================

    3.

    Thing.find(:all, :order => "updated_at desc, price asc")
    

    트릭을 할 것입니다.

    Thing.all.order("updated_at DESC, price ASC")
    

    갈 수있는 레일 3 방법입니다. (감사 @cpursley)

  4. ==============================

    4.액티브 레코드 쿼리 인터페이스를 사용하면 쿼리를 주문 원하는만큼의 속성을 지정할 수 있습니다 :

    액티브 레코드 쿼리 인터페이스를 사용하면 쿼리를 주문 원하는만큼의 속성을 지정할 수 있습니다 :

    models = Model.order(:date, :hour, price: :desc)
    

    또는 더 구체적를 얻으려면 (감사 @ zw963) :

    models = Model.order(price: :desc, date: :desc, price: :asc) 
    

    보너스 : 첫 번째 쿼리 후에는 다른 쿼리를 체인 수 있습니다 :

    models = models.where('date >= :date', date: Time.current.to_date)
    
  5. ==============================

    5.실제로 액티브 레코드를 사용하여 작업을 수행하는 방법에는 여러 가지가 있습니다. 위에서 언급되지 않은 하나는 것 (다양한 형식으로, 모든 유효한) :

    실제로 액티브 레코드를 사용하여 작업을 수행하는 방법에는 여러 가지가 있습니다. 위에서 언급되지 않은 하나는 것 (다양한 형식으로, 모든 유효한) :

    Model.order(foo: :asc).order(:bar => :desc).order(:etc)
    

    어쩌면 더 자세한하지만 개인적으로 관리하기 쉽게 찾을 수 있습니다. SQL은 한 단계에서 생산됩니다 :

    SELECT "models".* FROM "models" ORDER BY "models"."etc" ASC, "models"."bar" DESC, "models"."foo" ASC
    

    thusly 히, 원래의 질문에 대한 :

    Model.order(:updated_at).order(:price)
    

    당신은 데이터 형식을 선언 할 필요는 액티브가 원활하게이 작업을 수행하고, 그래서 당신의 DB 엔진을 수행합니다

  6. ==============================

    6.

    Model.all(:order => 'updated_at, price')
    
  7. ==============================

    7.이들 중 아무도 나를 위해 일한 없습니다! 인터넷을 통해 상단과 하단을 찾고 정확히 이일 후, 나는 해결책을 발견!

    이들 중 아무도 나를 위해 일한 없습니다! 인터넷을 통해 상단과 하단을 찾고 정확히 이일 후, 나는 해결책을 발견!

    special_price 및 MSRP : 당신이 포함 된 제품 테이블에 많은 열이 있다고 할 수 있습니다. 다음은 우리가 정렬하려고하는 두 개의 열이 있습니다.

    모델의 좋아, 첫 번째 이 줄을 추가합니다 :

    named_scope :sorted_by_special_price_asc_msrp_asc, { :order => 'special_price asc,msrp asc' }
    

    당신이 검색을 수행해야하는 경우 둘째, 제품 컨트롤러에 추가 :

    @search = Product.sorted_by_special_price_asc_msrp_asc.search(search_params)
    
  8. from https://stackoverflow.com/questions/3587776/ruby-on-rails-how-do-i-sort-with-two-columns-using-activerecord by cc-by-sa and MIT license