1

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 に対してクエリを実行して正しいソフト クレジットを見つけます。

4

0 に答える 0