2022-08-19 Rails in_order_of / Kernel#DelegateClass / Rails delegate_missing_to
Rails in_order_of
Rails 7 で追加されたActiveRecordのメソッド。任意の順番でレコードを取得できるようになる便利メソッド。
ActiveRecord::QueryMethods | RailsDoc(β)
User.in_order_of(:id, [1, 5, 3])
# SELECT "users".* FROM "users"
# ORDER BY FIELD("users"."id", 1, 5, 3)
# WHERE "users"."id" IN (1, 5, 3)
See also. Rails 7 adds ActiveRecord::QueryMethods#in_order_of - BigBinary Blog
Kernel#DelegateClass
下記の記事を読んでなるほどな〜って思った。
Enumerable を include する代わりに Enumerator オブジェクトを活用する - Qiita
クラス superclass のインスタンスへメソッドを委譲するクラスを定義し、そのクラスを返します。
require 'delegate'
class ExtArray < DelegateClass(Array)
def initialize
super([])
end
end
Rails delegate_missing_to
Rails では、 delegate_missing_to なんてものもある。
class Partition
delegate_missing_to :@event
def initialize(event)
@event = event
end
def person
detail.person || creator
end
end