- Так что я ищу, чтобы переместить функцию find_or_create с моего контроллера на мою модель. Если басистически, если местоположение уже существует, то выберите это, а затем создайте новый. Из немного чтения, я думаю, что перед функцией сохранения это должно сделать, но я не уверен в правильном синтаксисе и не могу найти много примеров в любом месте.
Location.rbМогу ли я найти Find_Or_Create в модели перед сохранением?
before_save :get_locations
def get_locations
Location.find_or_create_by(name: [:name])
end
Вот мой контроллер; он работал нормально при запуске find_or_create здесь.
Locations_controller.rb
def create
@location = Location.new(location_params)
# == worked previously == #
# @location = Location.find_or_create_by(name: location_params[:name])
# == worked previously == #
respond_to do |format|
...
end
end
Помощь было бы здорово!
Непонятно, чего вы пытаетесь достичь. Почему вы переместили эту логику в модель - вы не должны этого делать, если эти модели не связаны друг с другом. Также ваш метод 'get_locations' ничего не делает, за исключением того, что тратит время на ненужный sql-запрос, чтобы получить записи, которые отбрасываются позже. Пожалуйста, уточните свой вопрос с более подробной информацией о том, чего вы хотите достичь. – BroiSatse
В модели вы сделали бесконечный цикл, потому что 'create' запускает' before_save' фильтр. – maringan
Возможно, вы ищете обратный вызов 'before_action' для контроллеров? – Iceman