On Jan 10, 3:11 pm, ThinkWriteMute <[email protected]> wrote:
> Ah that makes perfect sense. So here's what I did:
>
> $accounts.where(:name => account_name).first.update(:current_login =>
> @user)
>
> But it doesn't change?

Dataset#first returns a hash, so you are still calling Hash#update.

> Does that mean .update requires a whole hash to replace the previous
> one? I didn't think that's how it worked.

Hash#update is unrelated to Sequel. Allow me to go into more detail.
For updates of single records, models are often used.  Dataset
instances operate on sets of rows, while model instances operate on
single rows.  You are trying to update a single row with a dataset,
which is why you are having issues.  With datasets, you have to do
something like:

  a = $accounts.where(:name => account_name).first
  $accounts.where(:id=>a[:id]).update(:current_login =>@user)

Or, assuming that name is unique, just a single update query:

  $accounts.where(:name => account_name).update(:current_login =>
@user)

With models, you could do:

  Account[:name=>account_name].update(:current_login =>@user)

Model.[] returns a model object, and Model#update updates the database
with the changed columns.

Jeremy
-- 
You received this message because you are subscribed to the Google Groups 
"sequel-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/sequel-talk?hl=en.


Reply via email to