gem版本:

rails版本: gem ‘rails’, ‘~> 5.2.0’
ruby 版本: ruby ‘2.5.1’
ransack 版本: gem ‘ransack’, ‘~> 1.8’

model 如下:

user.rb 、 users_role.rb 、 role.rb

users 和 roles 通过 users_roles多对多关联

在添加gem 'ransack', '~> 1.8'后导致,关联查询有问题:

pry(main)> User.first.roles
#结果为:
User Load (1.3ms)  SELECT  `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1
=> #<Role::ActiveRecord_Associations_CollectionProxy:0x2af40daec370>

#并未查询roles

将ransack版本改为:gem 'ransack', '~> 2.1'后,查询正常:

pry(main)> User.first.roles
#结果为:
 User Load (0.8ms)  SELECT  `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1 
  Role Load (3.4ms)  SELECT `roles`.* FROM `roles` INNER JOIN `users_roles` ON `roles`.`id` = `users_roles`.`role_id` WHERE `users_roles`.`user_id` = 1
=> [#<Role:0x00005556b26500a0 id: 1, name: "超级管理员", desc: "aa", created_at: Sat, 12 May 2018 08:05:03 CST +08:00, updated_at: Sat, 12 May 2018 13:08:28 CST +08:00>]

结果正常

0条评论 顺序楼层
请先登录再回复