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,

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to