2011-10-27 14 views
3

私は3つのモデルがあります:関連付けられているモデルに触れているのはなぜですか?

:私は期待されている subscription_delivery_methods Railsのアップデート上記のような割り当てを、行うと

s.delivery_method = DeliveryMethod.find 1 

:私はこのようなサブスクリプションに配信方法を割り当てる

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 

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!に触れると予期せぬ望ましくない、:

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

私が起きてからこの更新プログラムを防ぐために協会に:readonly:touchフラグのすべての種類を試してみました。私は成功していない。あなたはそれをやめる方法を知っていますか?

ありがとうございます。

+0

私はあなたの関係の割り当てでは、あなたの間違っていると思う: 書いてみる:... deliveryMethod(配信方法)は、多くに属し とその作品なら、私に教えてください。 – pimpin

答えて

0

autosave

has_one :delivery_method, :through => :subscription_delivery_method, :autosave => false 
+0

動作しませんでした。 1)has_oneに ':autosave'引数がありません。 2) ':autosave'を' belongs_to'で試しました - それは何の効果もありませんでした。 – arkadiy

関連する問題