Ruby on Rails Wednesday, April 4, 2012



On Tuesday, 3 April 2012 13:32:54 UTC-4, Ruby-Forum.com User wrote:

(This is may be more of a db design question than a rails question.)

Summary:

I'm thinking of creating a single AR class to hold constant symbol
values and use it for :has_many_through relations whenever I need a
constant symbol.  Is this a good idea or a bad idea?


Given your examples, I'm not convinced all of the things even need to BE in the database. One question I'd ask to help decide this is, "can an end-user meaningfully add a new one of these through the web interface?"

For example, "roles" typically would NOT be meaningful to add from the web interface - they require additional plumbing (unless you've got serious DB-driven RBAC already) in code above and beyond a simple name.

On the other hand, "categories" on a blog are a classic example of something that belongs in the DB; there's no additional behavior expected, they're just labels that can be attached to other things.

As to your original question, I'd lean towards "bad idea" - as others have pointed out, if the items in question are supposed to operate in separate domains they should be kept separate. This winds up simplifying lots of stuff - for instance, I can't think of any reason one would want to display a drop-down with a mishmash of natural resources and user roles, but a list of one or the other makes sense.

If you're really just looking for the ability to attach context-sensitive labels, you may also want to look at acts_as_taggable_on and friends:

https://github.com/mbleigh/acts-as-taggable-on

which will do nearly all of the work for you.

--Matt Jones

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/9KYl2lVG9JMJ.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

No comments:

Post a Comment