Antwort

2

Sie können dies durch Verbände wie folgt tun:

class User < ApplicationRecord 
    has_many :user_positions 
    has_many :job_titles, through: :user_positions 
end 

class UserPositions < ApplicationRecord 
    belongs_to :user 
    belongs_to :job_title 
end 

class JobTitle < ApplicationRecord 
    has_many :user_positions 
    has_many :users, through: :user_positions 
end 

Hier the documentation für viele zu viele Beziehungen in Rails.

1

mit Ihren Beziehungen wie folgt definiert:

class User < ApplicationRecord 
    has_many :user_positions 
end 

class JobTitle < ApplicationRecord 
    has_many :user_positions 
end 

class UserPosition < ApplicationRecord 
    belongs_to :user 
    belongs_to :job_title 
end 

Dann können Sie joins verwenden, mit beiden Modellen job_title und user_position durch das user Modell, und zu wissen, die user.id, so ist, dann können Sie pluck verwenden das bekommen benötigtes Attribut:

User.joins(user_positions: :job_title).where(id: 1).pluck('job_titles.title') 

der Ihnen eine SQL-Abfrage geben würde, wie:

SELECT job_titles.title 
FROM "users" 
INNER JOIN "user_positions" 
ON "user_positions"."user_id" = "users"."id" 
INNER JOIN "job_titles" 
ON "job_titles"."id" = "user_positions"."job_title_id" 
WHERE (users.id = 1) 
Verwandte Themen