Michael Pavling wrote:
> Coming back to my first thought when I read your code: WTF? What are
> you *trying* to do?! Why are you hoping to achieve with that
> find_by_sql? Are you trying to find the first record you created? If
> so, you need to learn some SQL:
>
> b = Blurg.find_by_sql("SELECT * from blurgs where name = 'tic'")
>
> If that's not what you're trying to do, please explain.
Michael:
The point of my question is that the save! silently fails, which
surprises me.
save! returns true yet doesn't save the record: how is this not a bug?
But since you asked (and since you've impugned my knowledge of SQL :),
what I'm really trying to do is marshal a bunch of fields from other
tables through a join. The real query is more like:
class AnalysisDatum < ActiveRecord::Base
... snip ...
def self.daily_metered_service(analysis_set_id, *metered_service_ids)
return nil unless metered_service_ids
service_ids = Utils.commify(metered_service_ids)
query1 = <<QUERY1
... snip ...
QUERY1
query2 = <<QUERY2
SELECT td.id as start_time_id,
DATE(td.datetime) AS date,
bills.premise_id AS premise_id,
#{analysis_set_id} AS analysis_set_id,
bills.resource AS resource,
SUM(bills.monthly_quantity/bills.billing_days) AS quantity,
SUM(bills.monthly_cost/bills.billing_days) AS cost
FROM time_dimensions AS td
INNER JOIN (#{query1}) AS bills
WHERE td.datetime BETWEEN bills.start_incl AND bills.end_incl
GROUP BY date, premise_id, resource
QUERY2
AnalysisDatum.find_by_sql(query2)
end
end
Each of the fields named in the query2 SELECT are names of field in a
"natural" AnalysisDatum record.
I understand that the records returned by this query are not stored in
the database, but I expected that this would work:
records = AnalysisDatum.daily_metered_service(as_id, ms_ids)
records.map {|r| r.save!}
... but as I said, this neither saves the records nor signals any error.
If that's not a bug, then it's at least unexpected. (r.readonly?
returns nil as well...)
I'm certain that I can create a new, empty AnalysisDatum records and
copy the fields from the records returned by the query, but I still want
to be convinced this is not a bug.
Thanks.
--
Posted via http://www.ruby-forum.com/.
--
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.