I''m setting up my users'' profiles as a set of key/value
pairs...
where each key/value pair is a row in an associated table, like so:
user_id
profile_key
value
The profile_keys themselves are associations to a "profile_keys"
table (yea, way too organized, I know. ;-)
For some syntax sugar, I''ve set up some methods on the
"profile"
has_many association on the user:
def [](k)
return fetch(socialize(k))
end
def []=(k, v)
kk = socialize k
user = @owner
if entry = fetch_object(kk)
entry.value = v
else
entry = UserProfile.new(
:profile_key => kk, :value => v, :user => user
)
end
entry.save
return entry
end
def socialize(key)
if key.class == Fixnum
key = UserProfileKey.find key
elsif key.class == String or key.class == Symbol
key = UserProfileKey.find_by_name key.to_s
end
return key
end
def fetch_object(profile_key)
result = self.collect { |x| x if x.profile_key == profile_key }
result.compact!
if v = result.first
return v
else
return nil
end
end
def fetch(profile_key)
if v = fetch_object(profile_key)
return v.value
else
return nil
end
end
Before I go too much further down this path... I''m *sure* somebody
else out there has set up an associated key/value pair table... is there
some published prior art on this? A plugin perhaps? (If not, the end result
is probably going to be me writing one... ;-)
Thanks,
Tyler
--~--~---------~--~----~------------~-------~--~----~
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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---