Hi, I’m puzzzled…
I have this model:
class UserCampaign < ActiveRecord::Base
belongs_to :user
belongs_to :campaign
attr_accessible :is_active, :user_id, :campaign_id
validates_presence_of :is_active, :user_id, :campaign_id
end
and have this observer:
class UserCampaignObserver < ActiveRecord::Observer
def after_create(user_campaign)
update_active(user_campaign)
end
def after_update(user_campaign)
update_active(user_campaign)
end
private
def update_active(user_campaign)
if user_campaign.is_active
ucs = UserCampaign.find_all_by_user_id_and_is_active(
user_campaign.user.id,true)
for uc in ucs do
if uc.id != user_campaign.id
uc.is_active = false
uc.save!
end
end
end
end
end
This is simple to guarantee that only one UserCampaign is active.
The problem is that when the observer runs, in uc.save!, the validation
fails giving me an error saying that the attribute is_active is
required…
If I remove is_required attribute from the list
of validates_presence_of, everything goes fine.
Why it gives me that error saying that is_active is required when I have
set
it just before the save in the observer?
Thanks,