2014-02-20 2 views
2

В моем db есть много пользователей с недопустимыми данными (без номера мобильного телефона). Потому что сейчас я добавил подтверждение наличия мобильного присутствия. Когда я пытаюсь добавить новое событие, я получаю сообщения об ошибках «Мобильный номер пользователя должен быть в ... формате». Как я могу пропустить проверку пользователя при создании событий?Пропустить проверку при создании has_many: через записи

event.rb

class Event < ActiveRecord::Base 
    has_many :participations 
    has_many :users, :through => :participations 
end 

user.rb

class User < ActiveRecord::Base 
    has_many :participations 
    has_many :events, :through => :participations 
end 

events_controller.rb

def create 
    @event = Event.new(event_params) 

    respond_to do |format| 
     if @event.save 
     format.html { redirect_to events_path, notice: 'Event was successfully created.' } 
     else 
     format.html { render action: 'new' } 
     end 
    end 
    end 

_form.html.erb

<%= form_for @event, :html => {:class => 'row'} do |f| %> 
     <%= f.error_messages %> 

     <%= f.label :name %> 
     <%= f.text_field :name %> 

     <%= f.label :user_ids, "Participants" %> 
     <%= f.collection_select :user_ids, User.all, :id, :name, {}, { :multiple => true } %> 

     <%= clear %> 

     <%= f.submit 'Save' %> 
    <% end %> 

ответ

6

Set validate: false в Event has_many :users ассоциация

class Event < ActiveRecord::Base 
    has_many :participations 
    has_many :users, :through => :participations, validate: false 
end 
+0

Большое спасибо! Оно работает! – MikeAndr

+0

Мне очень хотелось бы узнать, как это сделать в Rails 5.0.0.RC1. –

+1

Спасибо. Существует странное поведение при создании родительской записи и назначении дочерних идентификаторов типа 'Event.create (user_ids: [1, 2, 3])' Rails запускает 'valid?' Для каждого пользователя без присвоения 'event_id'. Таким образом, вы не можете определить, изменилось ли 'event_id' и пропустить проверку :(. – hlcs

Смежные вопросы