0

次の懸念があります。

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

手伝ってくれてありがとう!

4

1 に答える 1

0

このエラーの理由: class Experiment(私のクラスではない) は既にhas_many :subscriptions

アドバイス:奇妙な動作があり、他の人のコードを使用している場合は、停止してコードを確認してください。

于 2013-08-10T21:48:29.460 に答える