SoftCredit の作成時に呼び出される関数を持つ STI サブクラス、SoftCredits::EventBrite < SoftCredit があります。
def create_activity
options = {
owner: person,
created_at: additional_data['created_at'],
updated_at: additional_data['updated_at'],
trail_item_type: "Activities::EventBriteRegistration",
trail_item_id: self.id
}
Activity.create(options)
end
活動モデルは多態的です
belongs_to :trail_item, :polymorphic => true
Activities::EventBriteRegistration モデルの宣言は次のようになります。
class Activities::EventBriteRegistration < SoftCredit
def self.default_scope
unscoped
end
end
私の問題は、Activity::EventBriteRegistration のアクティビティ タイプがあり、それに対してクエリを実行するときです。クエリは次のように構成されます。
SELECT "soft_credits".* FROM "soft_credits" WHERE "soft_credits"."type" IN ('Activities::EventBriteRegistration') AND "soft_credits"."id" =[id] LIMIT 1.
もちろん、SoftCredits のタイプの Activities::EventBriteRegistration はありません。これをどのように構築すればよいか混乱しているため、event_brite_registration_activity.trail_item を実行すると、SoftCredit に対してクエリを実行して正しいソフト クレジットを見つけます。