У меня есть три модели: сайт, подписка, план:
Сайт
has_one :subscription
has_one :plan, :through => :subscription
Подписка
belongs_to :site
belongs_to :plan
План
has_many :subscriptions
В моем контроллере подписок я передаю POST, сначала загружая соответствующие объекты:
@site = current_user.site
@subscription = @site.subscription
@plan = @subscription.plan
К сожалению, если @ subscription.plan изменяется и сохраняется до POST, то это изменение не отражается в @site, если я не выполню @ site.reload в начале моего метода контроллера.
ех.
eval @subscription
> #<Subscription id: 6115, site_id: 5634, plan_id: 342, ... <== GOOD
eval @site.plan
> #<Plan id: 337, ... <== BAD
eval @subscription.site.plan
> #<Plan id: 342, ... <=== GOOD
eval @site.reload
eval @site.plan
> #<Plan id: 342,... <== GOOD
Есть идеи?
UPDATE
Ниже приведены два жизнеспособных ответа, но я не буду соглашаться на принятие любого из них, пока не узнаю больше о «сенсорном» варианте, который упоминал Джесси (который, к сожалению, не работает для меня ... .yet).