私は、肯定的な承認よりも否定的な承認が多い場合に例が除外される承認システムに取り組んでいます。
class Set < ActiveRecord::Base
has_many :examples
end
class Example < ActiveRecord::Base
has_many :approvals, as: :approvable
end
class Approval < ActiveRecord::Base
belongs_to :approvable, polymorphic: true
belongs_to :example
attr_accessible :choice #boolean
end
を呼び出すことで、例に属するすべての承認を取得できますExample.approvals
。
私が疑問に思っているのは、サンプルモデルにメソッドを作成してExample.approved
、サンプルにtrueまたはfalseの承認がさらにあるかどうかに応じて、単一のクエリでtrueまたはfalseを返すlaを使用できるかどうかです。最終的には、を呼び出すことによって承認されたセットの例のみを呼び出したいと思いますSet.approved_examples
。
例。承認された私は一種のことをすることができます
class Example < ActiveRecord::Base
...
def approved
if approvals.where(choice: true).count > approvals.where(choice: false).count
return true
end
false
end
end
ただし、2つのクエリが必要です。
Set.approved_examples
ここではSQLビューのauthorized_examplesのように見えますが、Setモデルでこのようなスコープが必要な場合はどこから始めればよいかわかりません。