On Sat, Oct 29, 2011 at 4:31 AM, Colin Law <[email protected]> wrote:
> On 28 October 2011 22:46, Christopher J. Bottaro <[email protected]> > wrote: > > Hello, > > What's the best/easiest way to write this delete statement using > > ActiveRecord 3.1? > > > > DELETE e1 > > FROM events e1 > > JOIN events e2 > > WHERE e1.subject_type = e2.subject_type > > AND e1.subject_id = e2.subject_id > > AND e1.origin_type = e2.origin_type > > AND e1.origin_id = e2.origin_id > > AND e1.id > e2.id > > Not answering the question I am afraid, but I think it is unwise to > assume anything about the id sequence. Presumably here you are > assuming that id values are assigned in an increasing sequence, but I > don't think this is necessarily guaranteed in the general case. I > think it might be better to use created_at, if that is what you really > mean. On the other hand if in reality you do not care which one you > delete and have the id test only to make sure that you delete only one > of them then please ignore my comment. > > Since you are interested in the best way to code it (rather than just > hacking in the sql) then presumably it is something that happens > routimnely rather than some tidying up operation that you have to do > once. Would it not be possible using validations or similar to ensure > that the duplicate record situation does not happen in the first > place? > > Colin Hmm. Interesting. On the one hand, I'm glad people are looking out for each other and advice is given on best practices. On the other hand, I forgot what it's like to ask for help on the internet and have everything you do under heavy scrutiny… :) Presumption incorrect. It *is* a one off and not routine code, but that doesn't stop me from wanting to learn how to better use AR/Arel. Also, I created a unique index as soon as I realized there were dupes and I cleaned them out. I also added validation (which isn't guaranteed to work, hence the unique index in the db), and test cases/specs for the situation. About the id vs created_at… I disagree and consciously chose the former. I think either will work fine and it's ok to make assumptions about the uniqueness (for sure) and order (comfortably sure) of primary keys for a given adapter. I'm familiar with the Postgres and MySQL adapters and I know they create unique, auto incrementing primary keys for each table. That said, I am open to notion that I'm wrong or do not fully understand something though, so… Thanks for the help, -- C -- 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

