Rails adding computed field to a join of multiple tables

I did join on three tables.

arel = OfferOrder.includes(:a, :b, :c) arel = arel.select(‘(CASE WHEN ISNULL(c.field2) THEN c.field1 ELSE c.field2 END) AS fraud’)

but when I run my code it gives error that

(Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS fraud)

Also I did try it this way,

arel = OfferOrder.includes(:a, :b).joins(:c).select('(CASE WHEN ISNULL(c.fields2) THEN c.fields1 ELSE c.field2 END) ')

Got error,

ActiveModel::MissingAttributeError (missing attribute: a_id):

I did join on three tables.

What was the SQL it generated?

Also I did try it this way,

arel = OfferOrder.includes(:a, :b).joins(:c).select('(CASE WHEN

ISNULL(c.fields2) THEN c.fields1 ELSE c.field2 END) ')

Got error,

ActiveModel::MissingAttributeError (missing attribute: a_id):

I did join on three tables.

arel = OfferOrder.includes(:a, :b, :c) arel = arel.select('(CASE WHEN

ISNULL(c.field2) THEN c.field1 ELSE c.field2 END) AS fraud’)

but when I run my code it gives error that

(Mysql2::Error: You have an error in your SQL syntax; check the manual

that corresponds to your MySQL server version for the right syntax to use

near 'AS fraud)

What was the SQL it generated?

Resolved this. Had to defined the join conditions and it worked. Though am stuck on another. The select query is not working when another query is made using <<SQL tags in the code. Can’t avoid using those.

Regards Sumit Srivastava

The power of imagination makes us infinite…