Sorry, I didn't read your code carefully enough the first time.
Your approach won't work because origin has no explicit type,
and SQLite will not infer a type from the literal string; the
unknown type defaults to numeric.
As Dennis said, the problem is really with RoR, but you can
work around it by creating two 1-row, 1-column tables. Here's
the idea; this is more or less the A part of your view, so
you'll have to add the union and the B part.
sqlite> pragma table_info(t1);
cid name type notnull dflt_value pk
---------- ---------- ---------- ---------- ---------- ----------
0 a integer 0 <> 1
1 c char 0 <> 0
sqlite> create temp table originA (a char);
sqlite> insert into originA values ('a');
sqlite> create temp view va as select t1.*, originA.a origin from t1, originA;
sqlite> pragma table_info(va);
cid name type notnull dflt_value pk
---------- ---------- ---------- ---------- ---------- ----------
0 a integer 0 <> 0
1 c char 0 <> 0
2 origin char 0 <> 0
Regards