【问题标题】:Querying three tables only one table has no association in rails 5在rails 5中查询三个表只有一个表没有关联
【发布时间】:2018-08-25 15:43:27
【问题描述】:

我在 rails 中有三张桌子

这是表格

员工 =(完全没有关联)

用户 = 出席人数很多

出席率 = 属于用户

那么我的问题是如何用这个查询三个表。

用户表加入出勤,然后也加入员工,其中employee.code = users.Empkey

我如何翻译它以使用 rails 5 在一个查询中加入三个表

【问题讨论】:

标签: ruby-on-rails


【解决方案1】:

您应该在员工和用户之间创建 ActiveRecord 关联。

class Employee < ApplicationRecord
  belongs_to :user, foreign_key: "code", class_name: "User"
end

class User < ApplicationRecord
  has_many :attendances
  has_one :employee, foreign_key: "Empkey", class_name: "Employee"
end

class Attendance < ApplicationRecord
  belongs_to :user
end

现在你可以随心所欲地玩耍了。

employee = Employee.first
@employee_attendances = employee.user.attendances

【讨论】:

  • employee 是一个基于外部的 api,然后用户从员工表中获取“代码”并存储到用户表的“empkey”属性中。 .我怎样才能把它翻译成活动记录?我之前使用过,但是当我这样做时它的响应为零。 . current_user.employee 因为我将其设置为 has_one : user.
  • 那么迁移呢?我们需要为模式中的 empkey 分配一个索引吗?那么使用 devise 注册时如何放置呢?我只是这个 rails 的初学者。 .
【解决方案2】:

您可以在连接表中使用原始 sql 来连接 3 个表,如示例中所示

User.joins(:attendances).joins("Inner joins employees on employees.code = users.Empkey")

希望这会有所帮助

【讨论】:

    猜你喜欢
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-13
    相关资源
    最近更新 更多