Skip to content

Instantly share code, notes, and snippets.

@staycreativedesign
Last active January 31, 2020 19:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save staycreativedesign/a2bb9a056fbb564c93432a57e21c60c5 to your computer and use it in GitHub Desktop.
Save staycreativedesign/a2bb9a056fbb564c93432a57e21c60c5 to your computer and use it in GitHub Desktop.
Trying to only list the faculty who have a specific specialization ( search by slug ) so if slug == nursing it only pulls up the faculty that has that specialization
class Faculty < ApplicationRecord
has_many :faculty_specializations
has_many :specializations, through: :faculty_specializations
extend FriendlyId
friendly_id :meta_slug, use: :slugged
has_one_attached :profile
end
class FacultySpecialization < ApplicationRecord
belongs_to :faculty
belongs_to :specialization
end
Faculty.find(4).specializations
[17] pry(#<SpecializationController>)> Faculty.find(4).specializations
CACHE Faculty Load (0.0ms) SELECT "faculties".* FROM "faculties" WHERE "faculties"."id" = $1 LIMIT $2 [["id", 4], ["LIMIT", 1]]
↳ (pry):18:in `show'
CACHE Specialization Load (0.0ms) SELECT "specializations".* FROM "specializations" INNER JOIN "faculty_specializations" ON "specializations"."id" = "faculty_specializations"."specialization_id" WHERE "faculty_specializations"."faculty_id" = $1 [["faculty_id", 4]]
↳ app/controllers/specialization_controller.rb:4:in `show'
=> [#<Specialization:0x00007fb2da73afe8 id: 2, title: "Staff", slug: "staff">, #<Specialization:0x00007fb2da73acc8 id: 4, title: "Director", slug: "director">, #<Specialization:0x00007fb2da73aa98 id: 5, title: "Nursing", slug: "nursing">]
[18] pry(#<SpecializationController>)>
Specialization.joins(:faculties).where(slug: 'nursing')
CACHE Specialization Load (0.0ms) SELECT "specializations".* FROM "specializations" INNER JOIN "faculty_specializations" ON "faculty_specializations"."specialization_id" = "specializations"."id" INNER JOIN "faculties" ON "faculties"."id" = "faculty_specializations"."faculty_id" WHERE "specializations"."slug" = $1 [["slug", "nursing"]]
↳ app/controllers/specialization_controller.rb:4:in `show'
=> [#<Specialization:0x00007fb2e0582fb0 id: 5, title: "Nursing", slug: "nursing">,
#<Specialization:0x00007fb2e0582e48 id: 5, title: "Nursing", slug: "nursing">,
#<Specialization:0x00007fb2e0582d58 id: 5, title: "Nursing", slug: "nursing">,
#<Specialization:0x00007fb2e0582c40 id: 5, title: "Nursing", slug: "nursing">]
# Why is it showing an array of specializations which include faculty_ids and not the actualy faculty_ids
Specialization.joins(:faculties).where(slug: 'nursing').first.faculty_ids
CACHE Specialization Load (0.0ms) SELECT "specializations".* FROM "specializations" INNER JOIN "faculty_specializations" ON "faculty_specializations"."specialization_id" = "specializations"."id" INNER JOIN "faculties" ON "faculties"."id" = "faculty_specializations"."faculty_id" WHERE "specializations"."slug" = $1 ORDER BY "specializations"."id" ASC LIMIT $2 [["slug", "nursing"], ["LIMIT", 1]]
↳ (pry):62:in `show'
CACHE (0.0ms) SELECT "faculties"."id" FROM "faculties" INNER JOIN "faculty_specializations" ON "faculties"."id" = "faculty_specializations"."faculty_id" WHERE "faculty_specializations"."specialization_id" = $1 [["specialization_id", 5]]
↳ (pry):62:in `show'
=> [4, 11, 30, 37]
Faculty.joins(:specializations).where(title: 'nursing')
CACHE Faculty Load (0.0ms) SELECT "faculties".* FROM "faculties" INNER JOIN "faculty_specializations" ON "faculty_specializations"."faculty_id" = "faculties"."id" INNER JOIN "specializations" ON "specializations"."id" = "faculty_specializations"."specialization_id" WHERE "faculties"."title" = $1 [["title", "nursing"]]
↳ app/controllers/specialization_controller.rb:4:in `show'
=> []
Faculty.joins(:specializations).where(slug: 'nursing')
CACHE Faculty Load (0.0ms) SELECT "faculties".* FROM "faculties" INNER JOIN "faculty_specializations" ON "faculty_specializations"."faculty_id" = "faculties"."id" INNER JOIN "specializations" ON "specializations"."id" = "faculty_specializations"."specialization_id" WHERE "faculties"."slug" = $1 [["slug", "nursing"]]
↳ app/controllers/specialization_controller.rb:4:in `show'
=> []
class Specialization < ApplicationRecord
has_many :faculty_specializations
has_many :faculties, through: :faculty_specializations
extend FriendlyId
friendly_id :title, use: :slugged
validates_uniqueness_of :title
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment