As we know the model can associate other model through the foreign key 
which is assigned or with an “_id” suffix by default. But can we define 
functional foreign key by ourselves ?

eg:

class Condition < ActiveRecord::Base
  belongs_to :city_info, foreign_key: "substring_index(the_city,',',1)"  
end

class CityInfo < ActiveRecord::Base
end

>> Condition.includes(:city_info).references(:city_info).last

>> Mysql2::Error: Unknown column 'conditions.substring_index(the_city,',',1)' 
>> in 'on clause': SELECT  ..... 
>> ......`conditions`.`substring_index(the_city,',',1)`  ORDER BY 
>> `conditions`.`id` DESC LIMIT 1


It's wrong. How can we achieve this.

I want to retrieve many conditions object, each associates with its first 
city_info by ActiveRecord with generating a single sql (not n+1

) like this:

select * from conditions left outer join city_info on 
convert(substring_index(conditions.the_city,',',1), unsigned integer) = 
city_info.id

ref: https://github.com/rails/rails/issues/14481

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" 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].
Visit this group at http://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

Reply via email to