Ruby on rails 通过sql查找我应该使用哪种模型?

Ruby on rails 通过sql查找我应该使用哪种模型?,ruby-on-rails,ruby,ruby-on-rails-4,rails-activerecord,Ruby On Rails,Ruby,Ruby On Rails 4,Rails Activerecord,共有三个表格: 使用者 时间表 用户时间表 用户模型和计划模型都有has\u和\u属于\u many-关系。 现在我只想这样做: user_id_binded = Schedule/User/Object/#I dont know!#.find_by_sql ["SELECT schedules_users.user_id FROM schedules_users WHERE schedules_users.schedule_id = ?", schedule.id] @user_schedu

共有三个表格:

  • 使用者
  • 时间表
  • 用户时间表
  • 用户模型和计划模型都有
    has\u和\u属于\u many
    -关系。

    现在我只想这样做:

    user_id_binded = Schedule/User/Object/#I dont know!#.find_by_sql ["SELECT schedules_users.user_id FROM schedules_users WHERE schedules_users.schedule_id = ?", schedule.id]
    @user_schedules_binded = User.find(user_id_binded)
    
    但是第一个
    find\u by\u sql
    的返回值必须是一个模型,因为我正确理解了Rails.Api。
    它既不是用户模型返回值,也不是计划模型返回值。

    在schedules_users-table中是用户和计划之间的所有关系。
    因此,我希望获得绑定到特定计划的所有用户。

    首先,我认为这应该是解决问题的正确方法,但当时我不知道返回值必须是一个模型。

    我该如何解决这个问题?

    似乎您有一个计划ID,并且最终需要用户-这可以通过像
    @user\u schedules\u binded=user.joins(:schedules)这样的join语句来实现。其中(计划:{ID:schedule\u ID})


    或者,如果您有schedule对象,
    schedule.users
    也会这样做,都会通过schedules\u users表。

    为什么不创建
    ScheduleUser
    模型并指定
    has\u many through
    关系呢?这就是为什么:p
    has\u many through
    关系并没有阻止这一原则。我同意,有很多人:这里的路是穿过的,我不明白你为什么认为这里不干燥。这真是太棒了!非常感谢你。还有一个问题:当前输出是`#
    。如何获取用户的姓名
    @user_schedule_bind.first.name`只返回第一个条目,但我需要所有用户的名称。
    schedule.users.each do | user | user.name end
    my solution。谢谢你的帮助。