Earlier, I had a custom cast in the DB, whether it was id of a tfs or a survey, it was casted appropriately, but since I removed the casting, I have the issue, that it's not quoting id of a survey.
On Wednesday, 24 June 2015 15:20:15 UTC+2, simon2k wrote: > > Thanks, I know this, but I'm asking about case in which survey_id is a > string, not an integer since I need to handle this case. > > The example in gist is simplified, but setup of models represents how they > should be set up. Basically the thing is that I have a polymorphic > relation, but in the gist I simplified it. I'll update the gist and add a > real usage for this. Here it is: > https://gist.github.com/simon2k/5b4d4043d4b625984ca1 > > On Wednesday, 24 June 2015 14:57:00 UTC+2, Elizabeth McGurty wrote: >> >> ActiveRecord::Schema.define do >> create_table :surveys, force: true do |t| >> >> end >> >> create_table :email_templates, force: true do |t| >> t.integer :survey_id >> end >> end >> >> The auto-generation of primary key in surveys is data type integer. >> Therefore the foreign key data type in email_templates should match. >> In your models, you might want to declare: self.primary_key = 'id'. But I >> don't think it's necessary. >> Just to be sure, you should probably go to your database and verify the >> contents of your tables: >> sql> use 'your databasename' >> sql> describe surveys; >> sql> describe email_templates; >> sql> SELECT surveys. * , email_templates. * >> FROM surveys >> INNER JOIN email_templates ON surveys.id = email_templates.survey_id >> >> In irb> Survey.email_templates.to_sql ... might be helpful as well for >> verification >> >> >> Hope this helps >> >> On Wednesday, June 24, 2015 at 8:21:39 AM UTC-4, simon2k wrote: >>> >>> Hi guys, >>> >>> The story is that I have two models Survey & Email Template as defined >>> in a sample app: >>> >>> https://gist.github.com/simon2k/5b4d4043d4b625984ca1 >>> >>> When I'm calling `survey.email_templates`, it fails, and I have the >>> following error: >>> >>> ActiveRecord::StatementInvalid: PG::UndefinedFunction: ERROR: operator >>> does not exist: character varying = integer >>> LINE 1: ...M "email_templates" WHERE "email_templates"."survey_id" = 1 >>> ^ >>> HINT: No operator matches the given name and argument type(s). You >>> might need to add explicit type casts. >>> : SELECT "email_templates".* FROM "email_templates" WHERE >>> "email_templates"."survey_id" = 1 >>> >>> I'm not sure whether I should treat it as a rails bug, and that rails >>> should quote this integer, or not. I could look further into AR, if you >>> feel, that this case should be handled. Otherwise, I'll be looking for a >>> different solution for this challenge. >>> >>> Also, I may mention source of this issue. Earlier our app was on >>> EngineYard, where we had custom casting for this, so whenever there was an >>> integer, it was casted into a string. Then we moved to RDS AWS, and >>> unfortunately there we can't create castings. I dropped all of them, and I >>> found this case. So I thought that it might be treated as a rails bug. >>> >>> Regards, >>> Simon >>> >> -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/53266172-7f82-4406-996b-3a74ba0525a3%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

