0
我很掙扎,當涉及到一個聯合表,這也是多態的,有很多。無法使它屬於的模型也是一個可以has_many
它的設置方式是問題屬於公司。問題可以通過question_participants(多態/聯合)屬於用戶,組或公司。
現在我可以保存用戶和組,但不能保存公司,當他們選擇。我認爲這與它作爲所有者的混淆有關。
# ask question
class QuestionsController < ApplicationController
def new
@question = current_user.company.questions.new
end
private
def question_params
params.require(:question).permit(:name, :optional,
user_ids: [], group_ids: [])
end
# company users belong to
class Company < ActiveRecord::Base
has_many :questions
end
# questions created by admin
class Question < ActiveRecord::Base
belongs_to :company
has_many :question_participants
has_many :answers
has_many :users, through: :question_participants,
source: :questionable, source_type: 'User'
has_many :groups, through: :question_participants,
source: :questionable, source_type: 'Group'
has_many :companies, through: :question_participants,
source: :questionable, source_type: 'Company'
end
和表單字段:
<%= form_for @question do |f| %>
<%= f.label :group_ids %>
<%= f.collection_select :group_ids, current_user.company.groups.order(:name), :id, :name, {},
{ multiple: true } %>
<%= f.label :user_ids %>
<%= f.collection_select :user_ids, current_user.company.users.order(:first_name), :id, :first_name, {},
{ multiple: true } %>
<%= f.label :name %>
<%= f.text_field :name, class: "form-control" %>
<%= f.submit class: "btn btn-success" %>
<% end %>