@@IDENTITY

Discussion in 'Ruby' started by For Mrperfect, Dec 5, 2007.

  1. I can't seem to find any resources which tell me how to do the
    following. When I write some content to a table in my database (mysql),
    I want to retrieve the id of the newly inserted record; an equivalent of
    select @@IDENTITY from sometable. How can I do this in ruby?

    In my code, I have a hash:

    params[:customer] = row.to_hash
    @customer = @asset.customers.build(params[:customer])

    # now I want to store, in table x, the id of this record which was just
    inserted into the customers table.
    --
    Posted via http://www.ruby-forum.com/.
    For Mrperfect, Dec 5, 2007
    #1
    1. Advertising

  2. For Mrperfect, Dec 5, 2007
    #2
    1. Advertising

  3. For Mrperfect wrote:
    > doesn't anyone know how to retrieve the id of the last inserted record,
    > using ruby?


    It's not that, it's that no-one tends to respond quickly to folk who don't
    bother to use Google. Look at the following link, and show the source of "insert":

    <http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SQLServerAdapter.html#M000779>

    To learn more, you might need to check out the ActiveRecord source code using svn.
    Clifford Heath, Dec 5, 2007
    #3
  4. First off, thanks for your reply. If it's the case the people haven't
    responded to my question for thinking that I haven't googled, I think
    think they're a bunch of stuck-ups!!! I did search but hadn't found my
    answer. I even went through the trouble of signing up for an account,
    on here, just to ask this question!! I'm new to ruby.

    I installed the activesupport gem but now I'm getting the error:

    undefined method `execute'

    I get the impression that this adapter is for ms sql server. would it
    work with mysql as well?



    Clifford Heath wrote:
    > For Mrperfect wrote:
    > It's not that, it's that no-one tends to respond quickly to folk who
    > don't
    > bother to use Google. Look at the following link, and show the source of
    > "insert":

    --
    Posted via http://www.ruby-forum.com/.
    For Mrperfect, Dec 5, 2007
    #4
  5. For Mrperfect

    Alex Young Guest

    For Mrperfect wrote:
    > First off, thanks for your reply. If it's the case the people haven't
    > responded to my question for thinking that I haven't googled, I think
    > think they're a bunch of stuck-ups!!!

    It's also worth mentioning that your initial request and follow-up were
    within two hours of each other, in the middle of the night (for me).
    It's somewhat unreasonable to expect an answer in that timeframe,
    especially when the answer to your problem is actually in the official docs.

    > I did search but hadn't found my
    > answer.

    It's worth mentioning that, because the assumption otherwise will be
    that you haven't.

    > I even went through the trouble of signing up for an account,
    > on here, just to ask this question!! I'm new to ruby.
    >
    > I installed the activesupport gem but now I'm getting the error:
    >
    > undefined method `execute'
    >
    > I get the impression that this adapter is for ms sql server. would it
    > work with mysql as well?

    If you're using ActiveRecord (not sure why you need activesupport for
    this), then it's taken care of automatically. In any case, your problem
    isn't getting the last inserted ID, because this code:

    customer = @asset.customers.build(params[:customer])

    *doesn't* save the customer, according to the docs here:
    http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#M000658.


    You want a:

    customer = @asset.customers.create(params[:customer])

    following which, customer.id will have the ID of the customer record as
    inserted into the customers table.

    --
    Alex

    >
    >
    >
    > Clifford Heath wrote:
    >> For Mrperfect wrote:
    >> It's not that, it's that no-one tends to respond quickly to folk who
    >> don't
    >> bother to use Google. Look at the following link, and show the source of
    >> "insert":
    Alex Young, Dec 5, 2007
    #5
  6. Alex Young wrote:
    > You want a:
    >
    > customer = @asset.customers.create(params[:customer])
    >
    > following which, customer.id will have the ID of the customer record as
    > inserted into the customers table.
    >
    > --
    > Alex


    GREAT! Thanks, Alex!
    --
    Posted via http://www.ruby-forum.com/.
    For Mrperfect, Dec 5, 2007
    #6
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Giovanni Bassi
    Replies:
    0
    Views:
    640
    Giovanni Bassi
    Oct 20, 2003
  2. nalbayo
    Replies:
    2
    Views:
    5,494
    Bruce Barker
    Nov 11, 2005
  3. JimLad
    Replies:
    0
    Views:
    446
    JimLad
    Jan 16, 2009
  4. Frederick D'hont
    Replies:
    0
    Views:
    306
    Frederick D'hont
    Jul 25, 2005
  5. Replies:
    6
    Views:
    449
Loading...

Share This Page