This project is archived and is in readonly mode.

joins() on has_one through generates SQL query with "IS NULL"
Reported by avioing | November 29th, 2010 @ 09:14 PM
using ruby 1.9.2, rails 3.0.3
Post
belongs_to :user_project
has_one :project, :through => :user_project
UserProject
belongs_to :project
has_many :posts
Project
has_many :user_projects
has_many :posts, :through => :user_projects
here is the problem:
irb> Post.joins(:project)
=> []
here is the generated query:
SELECT posts.* FROM posts INNER JOIN
user_projects ON posts.id IS
NULL INNER JOIN projects ON
projects.id =
user_projects.project_id
where is "IS NULL" coming from?
Comments and changes to this ticket
- 
            
         Joeri Samson December 15th, 2010 @ 05:07 PMI have the same problem (also using Rails 3.0.3, but using JRuby), additionally if I make the join 1 level deeper I get an INNER JOIN table_nameON 0.class FociSample < ActiveRecord::Base belongs_to :foci_group has_one :source_well, :through => :foci_group end class FociGroup < ActiveRecord::Base belongs_to :source_well, :foreign_key => "source_id", :class_name => "CultureWell" end class CultureWell < ActiveRecord::Base belongs_to :culture_plate endWhen trying 
 the generated query is:FociSample.joins(:source_well => :culture_plate)
 SELECTfoci_samples.* FROMfoci_samplesINNER JOINfoci_groupsONfoci_samples.idIS NULL INNER JOINculture_wellsON 0 INNER JOINculture_platesONculture_plates.id=culture_wells.culture_plate_idAdding an additional level 
 results in this query:class CulturePlate < ActiveRecord::Base belongs_to :culture_batch end
 
 
 FociSample.joins(:source_well => {:culture_plate => :culture_batch})
 
 where the join condition for the extra dependency makes sense again.SELECTfoci_samples.* FROMfoci_samplesINNER JOINfoci_groupsONfoci_samples.idIS NULL INNER JOINculture_wellsON 0 INNER JOINculture_platesONculture_plates.id=culture_wells.culture_plate_idINNER JOINculture_batchesONculture_batches.id=culture_plates.culture_batch_id
- 
         Jon Leighton December 21st, 2010 @ 08:16 PM- State changed from new to duplicate
- Importance changed from  to Low
 
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile »
<h2 style="font-size: 14px">Tickets have moved to Github</h2>
The new ticket tracker is available at <a href="https://github.com/rails/rails/issues">https://github.com/rails/rails/issues</a>
 avioing
      avioing
 Jeremy Kemper
      Jeremy Kemper
 Jon Leighton
      Jon Leighton
 Piotr Sarnacki
      Piotr Sarnacki