首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为HaBtM关系添加关联到联接表

为HaBtM关系添加关联到联接表
EN

Stack Overflow用户
提问于 2016-03-08 23:05:47
回答 1查看 123关注 0票数 0

我目前有3种模型(用户、配对、会议)和联接表meetings_pairings。

User.rb

代码语言:javascript
复制
class User < ActiveRecord::Base

  enum role: [:student, :supervisor, :admin]

  has_many :students, class_name: "User",
                      foreign_key: "supervisor_id"

  belongs_to :supervisor, class_name: "User"

  has_and_belongs_to_many :pairings

end

Pairings.rb

代码语言:javascript
复制
class Pairing < ActiveRecord::Base

  has_and_belongs_to_many :supervisor, class_name: 'User'
  belongs_to :student, class_name: 'User'

  has_and_belongs_to_many :meetings, join_table: :meetings_pairings

end

Meetings.rb

代码语言:javascript
复制
class Meeting < ActiveRecord::Base

    enum status: [:available, :unavailable]

    has_and_belongs_to_many :pairings, join_table: :meetings_pairings

end

Schema.rb (相关位)

代码语言:javascript
复制
  create_table "meetings", force: :cascade do |t|
    t.date     "meeting_date"
    t.datetime "meeting_time"
    t.integer  "status",       default: 0, null: false
    t.boolean  "accepted"
  end

  create_table "meetings_pairings", id: false, force: :cascade do |t|
    t.integer "pairing_id"
    t.integer "meeting_id"
  end

  add_index "meetings_pairings", ["meeting_id"], name: "index_meetings_pairings_on_meeting_id"
  add_index "meetings_pairings", ["pairing_id"], name: "index_meetings_pairings_on_pairing_id"

  create_table "pairings", force: :cascade do |t|
    t.integer  "supervisor_id"
    t.integer  "student_id"
    t.string   "project_title"
  end

  add_index "pairings", ["student_id"], name: "index_pairings_on_student_id", unique: true
  add_index "pairings", ["supervisor_id"], name: "index_pairings_on_supervisor_id"

我创建了视图和控制器,以使用户(处于配对状态的主管)能够创建会议。但是,我不知道如何将这个关联添加到联接表中。

meetings_controller.rb

代码语言:javascript
复制
class MeetingsController < ApplicationController

    def index
        @meetings = Meeting.all
    end

    def new
        @meeting = Meeting.new
    end

    def create
        @meeting = Meeting.new(meeting_params)
        if @meeting.save
      redirect_to meetings_path, :notice => "Meeting Created!"
    else 
      redirect_to meetings_path, :notice => "Meeting Failed!"
    end
  end

  def show
    @meeting = Meeting.find(params[:id])
  end  

  private
  def meeting_params
    params.require(:meeting).permit(:meeting_date, :meeting_time)
  end

end

形式从视图中

代码语言:javascript
复制
<%= form_for @meeting do |f| %>
  <div class="field">
    <%= f.label :meeting_date %><br />
    <%= f.text_field :meeting_date %>
  </div>
  <div class="field">
    <%= f.label :meeting_time %><br />
    <%= f.time_select :meeting_time, :ampm => true, :minute_step => 30, :default => {:hour => '9', :minute => '0'} %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

这会在会议表中创建一个条目,所以我的问题是如何将条目与创建会议的当前用户的配对id输入到join表中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-10 17:42:57

决定使用一个has_many :通过(用户-会议-用户)关系。问题不再有意义了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35879826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档