Assigning default values to attributes in a has_one associat

Hi List,

I’ve a little problem here, for which I can’t find a solution:

I have two models, person and event. Event is a polymorphic association
(timeable). In my person model I would like to define an association
with
Events:

class Person < ActiveRecord::Base

has_one birthday,
    :dependent => :destroy,
    :as => :timeable,
    :class_name => "Event",
    :foreign_key => :timeable_id,
    :conditions => "category = 'birthday'"

end

As you can see, there’s a category field in the event table, which
should
contain the category of the Event. In this case, is should
contain “birthday”.

I would like this category attribute to get set automatically to
“birthday”
whenever I create a new association.

So, calling simething like

@client.build_birthday(params[:birthday])

in my controller should set the category attribute to “birthday”. I was
trying
something like:

has_one birthday,
    :dependent => :destroy,
    :as => :timeable,
    :class_name => "Event",
    :foreign_key => :timeable_id,
    :conditions => ['category = ?', name.to_s] do
        self.category = "birthday"
    end

But this seems not to work.

Also there are callbacks for collection associations (i.e. before_add
and
after_add), but this does not work with has_one associations.

So, what would be the best way of doing womthing like this (I sure there
is at
least one way…)

Regards,
Timo

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs