Edge API ( http://edgeapi.rubyonrails.org/classes/ActiveRecord/Enum.html )에서는 다음을 사용할 수 있습니다.
Conversation.where(status: [:active, :archived])
Conversation.where.not(status: :active)
그러나 이제 우리는 다음과 같은 것을 사용할 수 있습니다.
Conversation.where(status: Conversation.statues[:active])
그런 다음에는 4.1.8, 레일 어떻게 조회 할 수 :active
와 :archived
같은 시간에?
원하는 것은 다음과 같습니다.
Conversation.where(status: Conversation.statues.values_at(:active, :archived))
.. 매핑 은 복수형 속성 이름을 가진 클래스 메서드를 통해 노출 되며 HashWithIndifferentAccess
.
데모 :
[12] pry(main)> Pet.all
Pet Load (0.5ms) SELECT "pets".* FROM "pets"
=> [#<Pet id: 6, animals: 1, created_at: "2015-02-21 10:40:19", updated_at: "2015-02-21 10:40:19", name: "Tilly">,
#<Pet id: 7, animals: 0, created_at: "2015-02-21 10:40:31", updated_at: "2015-02-21 10:40:54", name: "Xav">,
#<Pet id: 5, animals: 1, created_at: "2015-02-19 18:27:28", updated_at: "2015-02-21 10:41:06", name: "Mua">]
[13] pry(main)> Pet.where(animals: Pet.animals.values_at(:dog))
Pet Load (0.7ms) SELECT "pets".* FROM "pets" WHERE "pets"."animals" IN (0)
=> [#<Pet id: 7, animals: 0, created_at: "2015-02-21 10:40:31", updated_at: "2015-02-21 10:40:54", name: "Xav">]
[14] pry(main)> Pet.where(animals: Pet.animals.values_at(:cat))
Pet Load (0.8ms) SELECT "pets".* FROM "pets" WHERE "pets"."animals" IN (1)
=> [#<Pet id: 6, animals: 1, created_at: "2015-02-21 10:40:19", updated_at: "2015-02-21 10:40:19", name: "Tilly">,
#<Pet id: 5, animals: 1, created_at: "2015-02-19 18:27:28", updated_at: "2015-02-21 10:41:06", name: "Mua">]
그러나 아래는 더 깨끗합니다 :-
Conversation.where(status: [:active, :archived])
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다