使用连接表连接2个表

时间:2014-09-16 15:16:32

标签: ruby-on-rails postgresql activerecord

我在以下三个表格之间建立了关系:UserArmiesUser_Armies

UserArmies是我的联接表,其中包含user_idarmy_id

我想使用活动记录构建以下查询,但无法弄清楚:

SELECT ua.number_owned, a.population 
FROM user_armies ua 
INNER JOIN armies a 
ON ua.army_id = a.id 
WHERE ua.user_id = 1;

User has_many User_ArmiesArmies has_may User_Armies(只是使用连接表进行正常设置)。

是否有人知道执行此查询的正确活动记录语法!?

谢谢!

2 个答案:

答案 0 :(得分:1)

User_Armies型号:

belongs_to :user
belongs_to :armies

用户模型:

has_many :user_armies
has_many :armies, through: :user_armies

军队模型:

has_many :user_armies
has_many :users, through: :user_armies

控制器:

@user = User.find(params[:id])
@users = @user.armies

答案 1 :(得分:1)

UserArmies.joins(:armies, :user).where('users.id = 1').map { |e| { e.number_owned => e.armies.map(&:population) } } 

这样的事情应该有用......