Howdy, I have a couple questions on the best way to model things in
rails.
- How to model a table so an admin person can selectively turn on/
off hard/soft deletes from a table at a table level?
- Model a parent/child relationship that can go infinitely deep.
specifically equipment, parent => child => child => child …
On Thu, Nov 18, 2010 at 9:50 PM, Me [email protected] wrote:
Howdy, I have a couple questions on the best way to model things in
rails.
- How to model a table so an admin person can selectively turn on/
Use acts as paranoid plugin.
off hard/soft deletes from a table at a table level?
2. Model a parent/child relationship that can go infinitely deep.
specifically equipment, parent => child => child => child …
Use acts as tree plugin
–
Cheers,
Bala
RoR Developer Now Available for Hire
Bala P. wrote in post #962528:
[…]
- Model a parent/child relationship that can go infinitely deep.
specifically equipment, parent => child => child => child …
Use acts as tree plugin
Hell no! acts_as_tree should be avoided at all costs. The adjacency
list model that it uses is simple, naïve, and inefficient: each level of
the tree requires a separate query (unless you’re using Oracle, which
has a proprietary extension to its SQL that fixes this).
What you want instead is a nested set or nested interval structure
(do a Web search for articles on how these work). These allow retrieval
of an entire tree, to arbitrary depth, with a single query. Rails
plugins exist for both. acts_as_nested_interval was buggy last time I
used it, but has probably been fixed by now. awesome_nested_set lives
up to its name.
–
Cheers,
Bala
RoR Developer Now Available for Hire
The fact that you’re recommending acts_as_tree means that people ought
to think twice about hiring you…
Best,
Marnen Laibow-Koser
http://www.marnen.org
[email protected]
Sent from my iPhone
Please quote when replying.
Zoltan Gero wrote in post #962586:
Hello,
-
Active Record Associations — Ruby on Rails Guides
Here check has_many :through , has_and_belongs_to_many assotiations,
and I think you may need polymorphic association. You have to try them
out, but there are some help in the tutorial to make decision.
Nope. All you need is awesome_nested_set.
I’m not sure if I understand well your first question, can you write
it more clearly please?
good luck,
gezope
Best,
Marnen Laibow-Koser
http://www.marnen.org
[email protected]
Hello,
-
Active Record Associations — Ruby on Rails Guides
Here check has_many :through , has_and_belongs_to_many assotiations,
and I think you may need polymorphic association. You have to try them
out, but there are some help in the tutorial to make decision.
I’m not sure if I understand well your first question, can you write
it more clearly please?
good luck,
gezope
On Nov 19, 12:23pm, Marnen Laibow-Koser [email protected] wrote:
used it, but has probably been fixed by now. awesome_nested_set lives
up to its name.
Although nested sets make inserts very expensive. Like most data
modelling questions, the sort of access patterns that will be used -
while acts as tree makes getting a whole subtree expensive, if you
never need to do that in your app, who cares?
Fred
Frederick C. wrote in post #962721:
On Nov 19, 12:23pm, Marnen Laibow-Koser [email protected] wrote:
used it, but has probably been fixed by now. awesome_nested_set lives
up to its name.
Although nested sets make inserts very expensive.
So use nested intervals instead. They fix that problem completely.
Like most data
modelling questions, the sort of access patterns that will be used -
while acts as tree makes getting a whole subtree expensive, if you
never need to do that in your app, who cares?
If you never need a whole subtree, you probably don’t need a tree
structure in the first place (though there are exceptions).
Fred
Best,
Marnen Laibow-Koser
http://www.marnen.org
[email protected]
Sent from my iPhone