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

class Person < ActiveRecord::Base

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


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

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

So, calling simething like


in my controller should set the category attribute to “birthday”. I was
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"

But this seems not to work.

Also there are callbacks for collection associations (i.e. before_add
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…)


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