11175
(-- --)
1
I have a basic model class TestTime with no customization.
class TestTime < ActiveRecord::Base
end
I would like to pass the following SQL fragment as part of an AR save
call to TestTime objects. How and where would I do this in the model?
"set c_time=current_time"
(current_time is an SQL method, not a variable).
I have a basic model class TestTime with no customization.
class TestTime < ActiveRecord::Base
end
I would like to pass the following SQL fragment as part of an AR save
call to TestTime objects. How and where would I do this in the model?
Nothing builtin for that as far as I know. If you dig around in the AR
source you may find a suitable method to overide/piggyback on
Fred
11175
(-- --)
3
Frederick Cheung wrote:
I would like to pass the following SQL fragment as part of an AR save
call to TestTime objects. How and where would I do this in the model?
Nothing builtin for that as far as I know. If you dig around in the AR
source you may find a suitable method to overide/piggyback on
In AR::Base I find this:
def update(attribute_names = @attributes.keys)
quoted_attributes = attributes_with_quotes(false, false,
attribute_names)
return 0 if quoted_attributes.empty?
connection.update(
"UPDATE #{self.class.quoted_table_name} " +
"SET #{quoted_comma_pair_list(connection, quoted_attributes)}
" +
"WHERE #{connection.quote_column_name(self.class.primary_key)}
= #{quote_value(id)}",
"#{self.class.name} Update"
)
end
So, I think that something along the lines of:
module HLLARUpdateSQL
def self.included(base)
def update_sql(id,fragment)
return 0 unless fragment
connection.update(
"UPDATE #{self.class.quoted_table_name} " +
"SET #{fragment} " +
"WHERE #{connection.quote_column_name(self.class.primary_key)}
" +
"#{quote_value(id)}",
"#{self.class.name} Update"
)
end
end
end
might serve. Your thoughts?