drop dietary choices, social events, and html_export_path
This commit is contained in:
parent
1fdd029a86
commit
b9e10922ee
13 changed files with 315 additions and 39 deletions
|
|
@ -177,10 +177,9 @@ module Admin
|
||||||
private
|
private
|
||||||
|
|
||||||
def conference_params
|
def conference_params
|
||||||
params.require(:conference).permit(:title, :short_title, :description, :timezone, :html_export_path,
|
params.require(:conference).permit(:title, :short_title, :description, :timezone,
|
||||||
:start_date, :end_date, :rooms_attributes, :tracks_attributes,
|
:start_date, :end_date, :rooms_attributes, :tracks_attributes,
|
||||||
:dietary_choices_attributes, :use_dietary_choices,
|
:tickets_attributes, :event_types_attributes,
|
||||||
:tickets_attributes, :social_events_attributes, :event_types_attributes,
|
|
||||||
:logo, :questions_attributes,
|
:logo, :questions_attributes,
|
||||||
:question_ids, :answers_attributes, :answer_ids, :difficulty_levels_attributes,
|
:question_ids, :answers_attributes, :answer_ids, :difficulty_levels_attributes,
|
||||||
:use_difficulty_levels, :use_vpositions, :use_vdays, :vdays_attributes,
|
:use_difficulty_levels, :use_vpositions, :use_vdays, :vdays_attributes,
|
||||||
|
|
|
||||||
|
|
@ -19,11 +19,9 @@ class Conference < ActiveRecord::Base
|
||||||
has_one :email_settings, dependent: :destroy
|
has_one :email_settings, dependent: :destroy
|
||||||
has_one :program, dependent: :destroy
|
has_one :program, dependent: :destroy
|
||||||
has_one :venue, dependent: :destroy
|
has_one :venue, dependent: :destroy
|
||||||
has_many :social_events, dependent: :destroy
|
|
||||||
has_many :ticket_purchases, dependent: :destroy
|
has_many :ticket_purchases, dependent: :destroy
|
||||||
has_many :supporters, through: :ticket_purchases, source: :user
|
has_many :supporters, through: :ticket_purchases, source: :user
|
||||||
has_many :tickets, dependent: :destroy
|
has_many :tickets, dependent: :destroy
|
||||||
has_many :dietary_choices, dependent: :destroy
|
|
||||||
|
|
||||||
has_many :lodgings, dependent: :destroy
|
has_many :lodgings, dependent: :destroy
|
||||||
has_many :registrations, dependent: :destroy
|
has_many :registrations, dependent: :destroy
|
||||||
|
|
@ -38,9 +36,7 @@ class Conference < ActiveRecord::Base
|
||||||
has_many :commercials, as: :commercialable, dependent: :destroy
|
has_many :commercials, as: :commercialable, dependent: :destroy
|
||||||
has_many :subscriptions, dependent: :destroy
|
has_many :subscriptions, dependent: :destroy
|
||||||
|
|
||||||
accepts_nested_attributes_for :social_events, allow_destroy: true
|
|
||||||
accepts_nested_attributes_for :venue
|
accepts_nested_attributes_for :venue
|
||||||
accepts_nested_attributes_for :dietary_choices, allow_destroy: true
|
|
||||||
accepts_nested_attributes_for :tickets, allow_destroy: true
|
accepts_nested_attributes_for :tickets, allow_destroy: true
|
||||||
accepts_nested_attributes_for :sponsorship_levels, allow_destroy: true
|
accepts_nested_attributes_for :sponsorship_levels, allow_destroy: true
|
||||||
accepts_nested_attributes_for :sponsors, allow_destroy: true
|
accepts_nested_attributes_for :sponsors, allow_destroy: true
|
||||||
|
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
class DietaryChoice < ActiveRecord::Base
|
|
||||||
belongs_to :conference
|
|
||||||
has_many :registrations
|
|
||||||
end
|
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
class Registration < ActiveRecord::Base
|
class Registration < ActiveRecord::Base
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
belongs_to :conference
|
belongs_to :conference
|
||||||
belongs_to :dietary_choice
|
|
||||||
|
|
||||||
has_and_belongs_to_many :social_events
|
|
||||||
has_and_belongs_to_many :events
|
has_and_belongs_to_many :events
|
||||||
has_and_belongs_to_many :qanswers
|
has_and_belongs_to_many :qanswers
|
||||||
has_and_belongs_to_many :vchoices
|
has_and_belongs_to_many :vchoices
|
||||||
|
|
@ -12,7 +10,6 @@ class Registration < ActiveRecord::Base
|
||||||
has_many :workshops, through: :events_registrations, source: :event
|
has_many :workshops, through: :events_registrations, source: :event
|
||||||
|
|
||||||
accepts_nested_attributes_for :user
|
accepts_nested_attributes_for :user
|
||||||
accepts_nested_attributes_for :social_events
|
|
||||||
accepts_nested_attributes_for :qanswers
|
accepts_nested_attributes_for :qanswers
|
||||||
|
|
||||||
delegate :name, to: :user
|
delegate :name, to: :user
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
# in table 'conferences' looks like a more simple and straightforward solution
|
# in table 'conferences' looks like a more simple and straightforward solution
|
||||||
#
|
#
|
||||||
class RevisionObserver < ActiveRecord::Observer
|
class RevisionObserver < ActiveRecord::Observer
|
||||||
observe :conference, :event, :room, :social_event, :track
|
observe :conference, :event, :room, :track
|
||||||
|
|
||||||
def after_save(model)
|
def after_save(model)
|
||||||
begin
|
begin
|
||||||
|
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
class SocialEvent < ActiveRecord::Base
|
|
||||||
belongs_to :conference
|
|
||||||
has_and_belongs_to_many :registrations
|
|
||||||
end
|
|
||||||
|
|
@ -13,11 +13,4 @@
|
||||||
= u.input :affiliation, placeholder: 'Company/User Group/nothing', as: :string
|
= u.input :affiliation, placeholder: 'Company/User Group/nothing', as: :string
|
||||||
= f.inputs 'Registration Information' do
|
= f.inputs 'Registration Information' do
|
||||||
= render partial: 'conference_registrations/registration_info', locals: { f: f }
|
= render partial: 'conference_registrations/registration_info', locals: { f: f }
|
||||||
|
|
||||||
-# Not necessary
|
|
||||||
- if @conference.social_events.count > 0
|
|
||||||
= f.inputs 'Are you planning to attend any of the parties?' do
|
|
||||||
%br Yes, I'll be attending...
|
|
||||||
%br
|
|
||||||
= f.input :social_events, as: :check_boxes, label: false, collection: @conference.social_events
|
|
||||||
= f.action :submit, button_html: { class: 'btn btn-primary' }
|
= f.action :submit, button_html: { class: 'btn btn-primary' }
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,6 @@ Osem::Application.routes.draw do
|
||||||
resource :schedule, only: [:show, :update]
|
resource :schedule, only: [:show, :update]
|
||||||
get 'commercials/render_commercial' => 'commercials#render_commercial'
|
get 'commercials/render_commercial' => 'commercials#render_commercial'
|
||||||
resources :commercials, only: [:index, :create, :update, :destroy]
|
resources :commercials, only: [:index, :create, :update, :destroy]
|
||||||
get '/dietary_choices' => 'dietchoices#show', as: 'dietary_list'
|
|
||||||
patch '/dietary_choices' => 'dietchoices#update', as: 'dietary_update'
|
|
||||||
get '/volunteers_list' => 'volunteers#show'
|
get '/volunteers_list' => 'volunteers#show'
|
||||||
get '/volunteers' => 'volunteers#index', as: 'volunteers_info'
|
get '/volunteers' => 'volunteers#index', as: 'volunteers_info'
|
||||||
patch '/volunteers' => 'volunteers#update', as: 'volunteers_update'
|
patch '/volunteers' => 'volunteers#update', as: 'volunteers_update'
|
||||||
|
|
|
||||||
134
db/migrate/20160309182642_remove_social_events_table.rb
Normal file
134
db/migrate/20160309182642_remove_social_events_table.rb
Normal file
|
|
@ -0,0 +1,134 @@
|
||||||
|
class RemoveSocialEventsTable < ActiveRecord::Migration
|
||||||
|
class TempConference < ActiveRecord::Base
|
||||||
|
self.table_name = 'conferences'
|
||||||
|
|
||||||
|
has_many :temp_social_events
|
||||||
|
end
|
||||||
|
|
||||||
|
class TempSocialEvent < ActiveRecord::Base
|
||||||
|
self.table_name = 'social_events'
|
||||||
|
|
||||||
|
belongs_to :temp_conference
|
||||||
|
has_and_belongs_to_many :temp_registrations
|
||||||
|
end
|
||||||
|
|
||||||
|
class TempRegistration < ActiveRecord::Base
|
||||||
|
self.table_name = 'registrations'
|
||||||
|
|
||||||
|
belongs_to :temp_conference
|
||||||
|
has_and_belongs_to_many :temp_social_events
|
||||||
|
has_and_belongs_to_many :temp_qanswers
|
||||||
|
end
|
||||||
|
|
||||||
|
class TempRegistrationsSocialEvent < ActiveRecord::Base
|
||||||
|
self.table_name = 'registrations_social_events'
|
||||||
|
|
||||||
|
belongs_to :temp_registrations
|
||||||
|
belongs_to :temp_social_events
|
||||||
|
end
|
||||||
|
|
||||||
|
class TempQuestionType < ActiveRecord::Base
|
||||||
|
self.table_name = 'question_types'
|
||||||
|
|
||||||
|
has_many :temp_questions
|
||||||
|
end
|
||||||
|
|
||||||
|
class TempQuestion < ActiveRecord::Base
|
||||||
|
self.table_name = 'questions'
|
||||||
|
|
||||||
|
has_many :temp_qanswers
|
||||||
|
has_many :temp_answers, through: :temp_qanswers
|
||||||
|
belongs_to :temp_question_type
|
||||||
|
has_and_belongs_to_many :temp_conferences
|
||||||
|
end
|
||||||
|
|
||||||
|
class TempAnswer < ActiveRecord::Base
|
||||||
|
self.table_name = 'answers'
|
||||||
|
|
||||||
|
has_many :temp_qanswers
|
||||||
|
has_many :temp_questions, through: :temp_qanswers
|
||||||
|
end
|
||||||
|
|
||||||
|
class TempQanswer < ActiveRecord::Base
|
||||||
|
self.table_name = 'qanswers'
|
||||||
|
|
||||||
|
belongs_to :temp_question
|
||||||
|
belongs_to :temp_answer
|
||||||
|
has_and_belongs_to_many :temp_registrations
|
||||||
|
end
|
||||||
|
|
||||||
|
class TempConferencesQuestions < ActiveRecord::Base
|
||||||
|
self.table_name = 'conferences_questions'
|
||||||
|
end
|
||||||
|
|
||||||
|
class TempQanswerRegistration < ActiveRecord::Base
|
||||||
|
self.table_name = 'qanswers_registrations'
|
||||||
|
end
|
||||||
|
|
||||||
|
def up
|
||||||
|
# Create Question of 'Multiple Choice' type
|
||||||
|
qtype = TempQuestionType.find_or_create_by!(title: 'Multiple Choice')
|
||||||
|
|
||||||
|
TempConference.all.each do |conference|
|
||||||
|
if TempSocialEvent.where(conference_id: conference.id).any?
|
||||||
|
# Find existing question or initialize it
|
||||||
|
question = TempQuestion.find_or_initialize_by(title: 'Which of the following social events are you going to attend?',
|
||||||
|
conference_id: conference.id,
|
||||||
|
question_type_id: qtype.id)
|
||||||
|
question.save!
|
||||||
|
# Enable the question for the conference
|
||||||
|
TempConferencesQuestions.find_or_create_by!(conference_id: conference.id,
|
||||||
|
question_id: question.id)
|
||||||
|
end
|
||||||
|
|
||||||
|
TempSocialEvent.where(conference_id: conference.id).each do |social_event|
|
||||||
|
answer = TempAnswer.find_or_create_by!(title: social_event.title)
|
||||||
|
# Associate answer with the question
|
||||||
|
qa = TempQanswer.find_or_initialize_by(question_id: question.id,
|
||||||
|
answer_id: answer.id)
|
||||||
|
qa.save!
|
||||||
|
|
||||||
|
# Associate appropriate answer with registration
|
||||||
|
TempRegistrationsSocialEvent.where(social_event_id: social_event.id).each do |registration_social_event|
|
||||||
|
registration = TempRegistration.find(registration_social_event.registration_id)
|
||||||
|
TempQanswerRegistration.find_or_create_by!(registration_id: registration.id,
|
||||||
|
qanswer_id: qa.id)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
drop_table :social_events
|
||||||
|
drop_table :registrations_social_events
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
create_table :social_events do |t|
|
||||||
|
t.references :conference
|
||||||
|
t.string :title
|
||||||
|
t.text :description
|
||||||
|
t.date :date
|
||||||
|
end
|
||||||
|
|
||||||
|
create_table :registrations_social_events, id: false do |t|
|
||||||
|
t.references :registration, :social_event
|
||||||
|
end
|
||||||
|
|
||||||
|
qtype = TempQuestionType.find_by(title: 'Multiple Choice')
|
||||||
|
|
||||||
|
TempConference.all.each do |conference|
|
||||||
|
if qtype && (question = TempQuestion.find_by(title: 'Which of the following social events are you going to attend?',
|
||||||
|
conference_id: conference.id, question_type_id: qtype.id))
|
||||||
|
TempQanswer.where(question_id: question.id).each do |qa|
|
||||||
|
TempQanswerRegistration.where(qanswer_id: qa.id).each do |qa_registration|
|
||||||
|
answer = TempAnswer.find(qa.answer_id)
|
||||||
|
registration = TempRegistration.find(qa_registration.registration_id)
|
||||||
|
social_event = TempSocialEvent.find_or_create_by!(title: answer.title,
|
||||||
|
conference_id: conference.id)
|
||||||
|
TempRegistrationsSocialEvent.find_or_create_by!(registration_id: registration.id,
|
||||||
|
social_event_id: social_event.id)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
173
db/migrate/20160309182655_remove_dietary_choices_table.rb
Normal file
173
db/migrate/20160309182655_remove_dietary_choices_table.rb
Normal file
|
|
@ -0,0 +1,173 @@
|
||||||
|
class RemoveDietaryChoicesTable < ActiveRecord::Migration
|
||||||
|
class TempDietaryChoice < ActiveRecord::Base
|
||||||
|
self.table_name = 'dietary_choices'
|
||||||
|
|
||||||
|
belongs_to :temp_conference
|
||||||
|
end
|
||||||
|
|
||||||
|
class TempConference < ActiveRecord::Base
|
||||||
|
self.table_name = 'conferences'
|
||||||
|
|
||||||
|
has_many :temp_dietary_choices, dependent: :destroy
|
||||||
|
end
|
||||||
|
|
||||||
|
class TempRegistration < ActiveRecord::Base
|
||||||
|
self.table_name = 'registrations'
|
||||||
|
|
||||||
|
belongs_to :temp_conference
|
||||||
|
end
|
||||||
|
|
||||||
|
class TempQuestionType < ActiveRecord::Base
|
||||||
|
self.table_name = 'question_types'
|
||||||
|
|
||||||
|
has_many :temp_questions
|
||||||
|
end
|
||||||
|
|
||||||
|
class TempQuestion < ActiveRecord::Base
|
||||||
|
self.table_name = 'questions'
|
||||||
|
|
||||||
|
has_many :temp_qanswers
|
||||||
|
has_many :temp_answers, through: :temp_qanswers
|
||||||
|
belongs_to :temp_question_type
|
||||||
|
has_and_belongs_to_many :temp_conferences
|
||||||
|
end
|
||||||
|
|
||||||
|
class TempAnswer < ActiveRecord::Base
|
||||||
|
self.table_name = 'answers'
|
||||||
|
|
||||||
|
has_many :temp_qanswers
|
||||||
|
has_many :temp_questions, through: :temp_qanswers
|
||||||
|
end
|
||||||
|
|
||||||
|
class TempQanswer < ActiveRecord::Base
|
||||||
|
self.table_name = 'qanswers'
|
||||||
|
|
||||||
|
belongs_to :temp_question
|
||||||
|
belongs_to :temp_answer
|
||||||
|
has_and_belongs_to_many :temp_registrations
|
||||||
|
end
|
||||||
|
|
||||||
|
class TempConferencesQuestions < ActiveRecord::Base
|
||||||
|
self.table_name = 'conferences_questions'
|
||||||
|
end
|
||||||
|
|
||||||
|
class TempQanswerRegistration < ActiveRecord::Base
|
||||||
|
self.table_name = 'qanswers_registrations'
|
||||||
|
end
|
||||||
|
|
||||||
|
def up
|
||||||
|
# Create Question of 'Multiple Choice' type
|
||||||
|
if TempDietaryChoice.all.any?
|
||||||
|
qtype = TempQuestionType.find_or_create_by!(title: 'Single Choice')
|
||||||
|
end
|
||||||
|
|
||||||
|
# Migrate dietary_choice_id to a question
|
||||||
|
TempConference.all.each do |conference|
|
||||||
|
if TempDietaryChoice.where(conference_id: conference.id).any?
|
||||||
|
# Find existing question or initialize it
|
||||||
|
question = TempQuestion.find_or_initialize_by(title: 'Which is your dietary choice?',
|
||||||
|
conference_id: conference.id,
|
||||||
|
question_type_id: qtype.id)
|
||||||
|
question.save!
|
||||||
|
# Enable the question for the conference
|
||||||
|
TempConferencesQuestions.find_or_create_by!(conference_id: conference.id,
|
||||||
|
question_id: question.id)
|
||||||
|
|
||||||
|
TempDietaryChoice.where(conference_id: conference.id).each do |dietary_choice|
|
||||||
|
answer = TempAnswer.find_or_create_by!(title: dietary_choice.title)
|
||||||
|
# Associate answer with the question
|
||||||
|
qa = TempQanswer.find_or_initialize_by(question_id: question.id,
|
||||||
|
answer_id: answer.id)
|
||||||
|
qa.save!
|
||||||
|
|
||||||
|
# Associate appropriate answer with registration
|
||||||
|
TempRegistration.where(dietary_choice_id: dietary_choice.id).each do |registration|
|
||||||
|
TempQanswerRegistration.find_or_create_by!(registration_id: registration.id,
|
||||||
|
qanswer_id: qa.id)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Migrate other_dietary_choice to a question and put data in other_special_needs
|
||||||
|
TempRegistration.all.each do |registration|
|
||||||
|
if registration.other_dietary_choice.present?
|
||||||
|
conference = TempConference.find(registration.conference_id)
|
||||||
|
qtype = TempQuestionType.find_or_create_by!(title: 'Yes/No')
|
||||||
|
question = TempQuestion.find_or_initialize_by(title: 'Do you have another dietary choice?',
|
||||||
|
conference_id: conference.id,
|
||||||
|
question_type_id: qtype.id)
|
||||||
|
question.save!
|
||||||
|
# Enable the question for the conference
|
||||||
|
TempConferencesQuestions.find_or_create_by!(conference_id: conference.id,
|
||||||
|
question_id: question.id)
|
||||||
|
|
||||||
|
# Create 'Yes' answer
|
||||||
|
answer_yes = TempAnswer.find_or_create_by!(title: 'Yes')
|
||||||
|
|
||||||
|
# Associate answer with the question
|
||||||
|
qa = TempQanswer.find_or_initialize_by(question_id: question.id,
|
||||||
|
answer_id: answer_yes.id)
|
||||||
|
|
||||||
|
qa.save!
|
||||||
|
|
||||||
|
# Associate appropriate answer with registration
|
||||||
|
TempQanswerRegistration.find_or_create_by!(registration_id: registration.id,
|
||||||
|
qanswer_id: qa.id)
|
||||||
|
|
||||||
|
# Move data from other_dietary_choice to other_special_needs
|
||||||
|
registration.other_special_needs << "Other dietary choice: #{registration.other_dietary_choice}."
|
||||||
|
registration.save!
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
remove_column :conferences, :use_dietary_choices
|
||||||
|
remove_column :registrations, :dietary_choice_id
|
||||||
|
remove_column :registrations, :other_dietary_choice
|
||||||
|
drop_table :dietary_choices
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
create_table :dietary_choices do |t|
|
||||||
|
t.references :conference
|
||||||
|
t.string :title, null: false
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
|
||||||
|
add_column :conferences, :use_dietary_choices, :boolean
|
||||||
|
add_column :registrations, :dietary_choice_id, :integer
|
||||||
|
add_column :registrations, :other_dietary_choice, :text
|
||||||
|
|
||||||
|
qtype = TempQuestionType.find_by(title: 'Single Choice')
|
||||||
|
TempConference.all.each do |conference|
|
||||||
|
if qtype && (question = TempQuestion.find_by(title: 'Which is your dietary choice?',
|
||||||
|
conference_id: conference.id, question_type_id: qtype.id))
|
||||||
|
TempQanswer.where(question_id: question.id).each do |qa|
|
||||||
|
TempQanswerRegistration.where(qanswer_id: qa.id).each do |qa_registration|
|
||||||
|
answer = TempAnswer.find(qa.answer_id)
|
||||||
|
registration = TempRegistration.find(qa_registration.registration_id)
|
||||||
|
dietary_choice = TempDietaryChoice.find_or_create_by!(title: answer.title,
|
||||||
|
conference_id: conference.id)
|
||||||
|
registration.dietary_choice_id = dietary_choice.id
|
||||||
|
registration.save!
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
qtype = TempQuestionType.find_by(title: 'Yes/No')
|
||||||
|
answer_yes = TempAnswer.find_by(title: 'Yes')
|
||||||
|
TempConference.all.each do |conference|
|
||||||
|
if qtype && (question = TempQuestion.find_by(title: 'Do you have another dietary choice?',
|
||||||
|
conference_id: conference.id, question_type_id: qtype.id))
|
||||||
|
TempQanswer.where(question_id: question.id, answer_id: answer_yes.id).each do |qa|
|
||||||
|
TempQanswerRegistration.where(qanswer_id: qa.id).each do |qa_registration|
|
||||||
|
registration = TempRegistration.find(qa_registration.registration_id)
|
||||||
|
registration.other_dietary_choice = 'Yes'
|
||||||
|
registration.save!
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
class RemoveHtmlExportPathFromConferences < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
remove_column :conferences, :html_export_path, :string
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
FactoryGirl.define do
|
|
||||||
factory :social_event do
|
|
||||||
title 'Example Social Event'
|
|
||||||
description 'Lorem Ipsum Dolsum'
|
|
||||||
date { Date.today }
|
|
||||||
conference
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
@ -29,8 +29,6 @@ describe 'Registration' do
|
||||||
describe 'association' do
|
describe 'association' do
|
||||||
it { is_expected.to belong_to(:user) }
|
it { is_expected.to belong_to(:user) }
|
||||||
it { is_expected.to belong_to(:conference) }
|
it { is_expected.to belong_to(:conference) }
|
||||||
it { is_expected.to belong_to(:dietary_choice) }
|
|
||||||
it { is_expected.to have_and_belong_to_many(:social_events) }
|
|
||||||
it { is_expected.to have_and_belong_to_many(:events) }
|
it { is_expected.to have_and_belong_to_many(:events) }
|
||||||
it { is_expected.to have_and_belong_to_many(:qanswers) }
|
it { is_expected.to have_and_belong_to_many(:qanswers) }
|
||||||
it { is_expected.to have_and_belong_to_many(:vchoices) }
|
it { is_expected.to have_and_belong_to_many(:vchoices) }
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue