여기, squeel을 사용하여 쿼리 빌더를 구축하고 싶습니다 내가했던 방법입니다Squeel을 사용하여 innested 쿼리를 만드는 방법은 무엇입니까?
부모 클래스 :
module ModelFilters
class Base
def initialize(user)
@user = user
end
def build(method_name)
head.where { my { send(method_name) } }
end
protected
def head
end
end
end
아이 클래스 :
module ModelFilters
class Collection < Base
def __showable__
not_private | author
end
protected
def head
::Collection.joins(:collaborators)
end
private
def not_private
is_private == false
end
def author
user_id == @user.id
end
end
end
그리고 마지막으로 내 전화 :
a = ModelFilters::Collection.new(user)
a.build(:__showable__)
사실 내 문제는 내가하는 것입니다. 내 질문에 대한 Squeel 작동 방식을 모르지만 실제 오류는 undefined local variable or method 'is_private'
(분명히)입니다.
Squeel (또는 다른 ActiveRecord 쿼리 작성기)을 사용하여 이와 같은 방법으로 빌드 할 수 있습니까?
감사합니다.
재미는'showable'을 발견하지만'동안, showable'이 (내은'send' 방법이라고 함) 자식 클래스의 함수'@apneadiving – apneadiving
을 is_private' 'is_private'는 내 모델 속성입니다 – Rowandish