В моем 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 %>
Большое спасибо! Оно работает! – MikeAndr
Мне очень хотелось бы узнать, как это сделать в Rails 5.0.0.RC1. –
Спасибо. Существует странное поведение при создании родительской записи и назначении дочерних идентификаторов типа 'Event.create (user_ids: [1, 2, 3])' Rails запускает 'valid?' Для каждого пользователя без присвоения 'event_id'. Таким образом, вы не можете определить, изменилось ли 'event_id' и пропустить проверку :(. – hlcs