Application design question (Application Theory)

This is currentlymaking my head spin, and it looks like i cant get a
clear answer: so im turning to you.
In my sandbox application i have users and these have profiles: in
profiles i store information like a “about me” and country, state and
city. And some other information (all who the user select from a
select box).

In my current design i have:

user => has_one :profile

and then:

profile => has_one :country
=> has_one :state
=> has_one :city
=> has_one etc etc etc

Is this the bes way to design an application or should i store data as
a string instead (like Country => String Sweden) etc ?

How would you do this ?

On Jun 6, 2011, at 10:45 AM, Niklas N. wrote:

How would you do this ?
It depends. If you want to have convenience methods in your code,
where there is a picking list of countries, for example, to cut down
on mis-spellings, then using has_one is a great approach. But it does
mean another association, and that has a price to pay when you display
the parent, because you have to look up and cache all those values.

Another approach I have taken is to offload the complexity into the
edit view, since it’s not accessed nearly as often as the show. I use
a helper to create a “combo box” control for these sorts of fields,
which is loaded with an alphabetized and “uniqued” list of previously-
entered values, and ends in Other. Switching to Other causes a
JavaScript function to fire which replaces the picker with a text
field of the same name and ID. Blurring away from that field without
entering anything replaces the text field with the picker again.

The value is stored as a string, which then makes it available without
a separate or joined lookup into another table. So the user can enter
anything she likes, but gets to pick from a convenient list first to
avoid more typing.

Walter

What got me thinking was the idea that it would fire a lot a sql when
fetching a user. If i stored all data in the profile as string’s there
would
be less sql, right ?

I will keep the dropdown boxes and fill them from a model. But store
the data as strings instead of all has_one, or is the
ghost_of_many_sql_questions just
in my head ?

On Jun 6, 2011, at 2:11 PM, Niklas N. wrote:

What got me thinking was the idea that it would fire a lot a sql when
fetching a user. If i stored all data in the profile as string’s there
would
be less sql, right ?

That’s what I was saying. Even though there are optimizations to be
had with the joins, just grabbing the strings feels lighter to me.

Walter

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