Почему связанная модель затрагивается? - PullRequest
3 голосов
/ 27 октября 2011

У меня есть 3 модели:

class DeliveryMethod
  has_many :subscription_delivery_methods
  has_many :subscriptions, :through => :subscription_delivery_methods
end

class SubscriptionDeliveryMethod < ActiveRecord::Base
  belongs_to :subscription
  belongs_to :delivery_method
end

class Subscription < ActiveRecord::Base
  has_one :subscription_delivery_method
  has_one :delivery_method, :through => :subscription_delivery_method
end

Я назначаю способ доставки для подписки следующим образом:

s.delivery_method = DeliveryMethod.find 1

Когда я выполняю назначение, как указано выше, Rails обновляет subscription_delivery_methods, чтоожидается:

UPDATE subscription_delivery_methods SET delivery_method_id = 1, updated_at = '2011-10-27 09:11:23' WHERE subscription_delivery_methods.id = 2

Но когда я делаю s.save!, это касается DeliveryMethod, что неожиданно и нежелательно:

UPDATE delivery_methods SET updated_at = '2011-10-27 08:40:53' WHERE delivery_methods.id = 1

Я пробовал все виды :readonly и :touch флаги на ассоциации, чтобы предотвратить это обновление.Я не преуспел.Ребята, вы знаете, как это остановить?

Большое спасибо.

1 Ответ

0 голосов
/ 27 октября 2011

Может быть autosave?

 has_one :delivery_method, :through => :subscription_delivery_method, :autosave => false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...