my query look like this;
"update table_a set field_1='ABCD' where field_2='A';"
it doesn't work with this:
@arr = table_a.find(["field_1 = ? ", "ABCD"])
for item in arr item.field_2 = "A" item.save end
my query look like this;
"update table_a set field_1='ABCD' where field_2='A';"
it doesn't work with this:
@arr = table_a.find(["field_1 = ? ", "ABCD"])
for item in arr item.field_2 = "A" item.save end
@arr = table_a.find(:all, :conditions => 'field_1 = ?', "ABCD'])
then run your loop... although it should be
for item in @arr ( not just arr, but I assumed that was a typo )
I was guessing at what you wanted, your question isn't too clear.
Cheers sw0rdfish
actually I want to update multiple rows with value "A"
sw0rdfish wrote:
then my example should work no? IF not what errors do you get?
Dev Xpert wrote:
my query look like this;
"update table_a set field_1='ABCD' where field_2='A';"
it doesn't work with this:
@arr = table_a.find(["field_1 = ? ", "ABCD"])
That's got it all bass-ackwards, you want to find based on field_2 - your where clause, and update field_1 - the SET statement.
for item in arr item.field_2 = "A" item.save end
# brute force, being obvious about what we do @table_as = Table_a.find(:all, :conditions => ["field_2 = ?", 'A']) for table_a in @table_as @table_a = Table_a.find(table_a) @table_a.field_1 = 'ABCD' @table_a.save end
I'm sure there's a simpler way statement-wise to do it, but that's off the cuff.
Yes... there is a much simpler way...
Model.update_all accepts conditions.
* http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M001383
Good luck,
Robby