У меня есть 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
флаги на ассоциации, чтобы предотвратить это обновление.Я не преуспел.Ребята, вы знаете, как это остановить?
Большое спасибо.