次の懸念があります。
module Eventable
extend ActiveSupport::Concern
# ...
included do
has_many :subscriptions, as: :entity, dependent: :destroy
end
end
私のモデルは次のとおりです。
class Experiment < ActiveRecord::Base
include Eventable
end
class Subscription < ActiveRecord::Base
belongs_to :entity, polymorphic: true
end
私のコントローラーでは、次のように実験用のサブスクリプションを作成しようとしています:
class SubscriptionsController < ApplicationController
before_filter :find_entity
def create
subscription = Subscriptions.new(params[:subscription])
@entity.subscriptions << subscription # Why is it false?
# ...
end
end
しかし、うまくいきません。
@entity.subscriptions.count
デバッグ中に、間違った SQL クエリが作成されていることに気付き
ました。
SELECT COUNT(*) FROM [subscriptions] WHERE [subscriptions].[experiment_id] = 123
私が期待している間:
SELECT COUNT(*) FROM [subscriptions] WHERE [subscriptions].[entity_id] = 123 AND [subscriptions].[entity_type] = 'Experiment'
注:次のようにすると、正しく動作します。
subscription.entity = @entity
subscription.save
手伝ってくれてありがとう!