Last active
January 31, 2020 19:23
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class FacultySpecialization < ApplicationRecord | |
belongs_to :faculty | |
belongs_to :specialization | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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' | |
=> [] | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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