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/8768548a-d228-4f18-9ae2-fdf4b54dd653%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to