Method: MetaField::ModelExtension::ClassMethods#meta
- Defined in:
- lib/meta_field/extension.rb
#meta ⇒ Object
meta_join でメタ属性での絞り込みを行う際にArelっぽく標記するために使うProxyを得るメタ属性は単純なカラム名で扱うことができないため、Proxyを通して操作する
Book.meta_join(:subtitle: Book.meta[:subtitle].matches_any(['%KEYWORD1%', '%KEYWORD2%']))
# => SELECT "books".*
# FROM "books" INNER JOIN (
# SELECT "obj_id" as "note_obj_id", "text" as "note"
# FROM "meta_field_metas"
# WHERE
# "meta_field_metas"."obj_type" = 'Book' AND "meta_field_metas"."basename" = 'note' AND
# ("meta_field_metas"."text" LIKE '%HOGE%' OR "meta_field_metas"."text" LIKE '%FUGA%')
# ) ON "books"."id" = "note_obj_id"
Author.meta_join(:age: Author.meta[:age].gt(20).and(Author.meta[:age].lt(40))).order(:age)
# => SELECT "authors".*
# FROM "authors" INNER JOIN (
# SELECT "obj_id" as "age_obj_id", "integer" as "age"
# FROM "meta_field_metas"
# WHERE
# "meta_field_metas"."obj_type" = 'Author' AND "meta_field_metas"."basename" = 'age AND
# "meta_field_metas"."integer" > 20 AND "meta_field_metas"."integer" < 40
# ) ON "authors"."id" = "age_obj_id"
# ORDER BY age
160 161 162 |
# File 'lib/meta_field/extension.rb', line 160 def MetaField::MetaProxy.new(self) end |