将aasm
statemachine
用于模型Booking
。
状态机具有以下状态
state :payment_authorized
state :payment_captured
state :payment_failed
state :some_more_states
因此,要根据状态提取预订,我可以致电booking.payment_authorized
。但我在寻找的是我想要所有状态为payment_authorized
和payment_captured
的记录。
这有效booking.payment_authorized + booking.payment_captured
,但这是2次数据库调用。一个用于查找authorized_state
,另一个用于captured_state
。如何更有效地完成这项工作(一次通话)?
谢谢
答案 0 :(得分:2)
您可以使用[[3, 3, 5],
[-6, 5, 3],
[9, 2, 0]]
获取单个查询中的所有记录。
答案 1 :(得分:2)
ActiveRelation
' s OR
来实现两个关系的逻辑联合。请注意,该解决方案特定于Rails 5。
您也可以通过以下方式完成:
Booking.where(aasm_state: [:payment_authorized, :payment_captured])
默认情况下, aasm
使用aasm_state
列来包含状态。它将进行IN
查询。