既存の協会
class Job < ActiveRecord::Base
belongs_to :client
belongs_to :contact
belongs_to :location
has_one :geofence, :through => :location
end
class Client < ActiveRecord::Base
has_many :contacts
has_many :locations
end
class Contact < ActiveRecord::Base
belongs_to :client
end
class Location < ActiveRecord::Base
belongs_to :client
belongs_to :geofence
end
class Geofence < ActiveRecord::Base
has_many :locations
end
さまざまなテーブルからフィールドを検索する仕事を見つけようとすると、私はこのようなことをします
@jobs = Job.find(:all, :joins => [:client,:contact,:location,:geofence], :conditions => ['geofences.address like ?',"%#{params[:term]}%"])
次のエラーが発生します
ActiveRecord::StatementInvalid (Mysql::Error: Unknown column 'geofences_jobs_join.location_id'
次のクエリから
SELECT `jobs`.* FROM `jobs` INNER JOIN `clients` ON `clients`.id = `jobs`.client_id INNER JOIN `contacts` ON `contacts`.id = `jobs`.contact_id INNER JOIN `locations` ON `locations`.id = `jobs`.location_id INNER JOIN `locations` geofences_jobs_join ON (`jobs`.`id` = `geofences_jobs_join`.`location_id`) INNER JOIN `geofences` ON (`geofences`.`id` = `geofences_jobs_join`.`geofence_id`) WHERE ...
ジョブモデルまたはクエリの結合部分の別の関連付けでこれを修正する方法はありますか?
find_by_sqlを使用して必要なものを取得できましたが、可能であればそれを避けたいと思います。