Два вопроса здесь. Во-первых, мне нужно получить доступ к идентификатору модели до того, как будут определены все его атрибуты. Это означает, что это:Rails render json validation issue
class Search < ActiveRecord::Base
validates_presence_of :name
validates_presence_of :color_data
end
выдает ошибку, если я не снял вторую линию, которая не является хорошей вещью, чтобы сделать. Моя вторая проблема заключается в том, что я не хочу отображать json до тех пор, пока модель не будет иметь оба атрибута. Это мой контроллер:
def create
@search = Search.create(name: (params[:name]))
Resque.enqueue(InstagramWorker, @search.id)
respond_to do |format|
if @search.save
format.json { render json: @search }
format.html { redirect_to root_path }
else
format.html { redirect_to root_path }
end
end
end
Должен ли я написать некоторую логику в модели, чтобы проверить имя & & color_data перед сохранением? И есть ли обходной путь для доступа к идентификатору без нарушения валидации?
Вы имеете в виду, например, проверять ': color_data' только иногда? – joseramonc
Проверить наличие color_data только после этого: Resque.enqueue (InstagramWorker, @ search.id), в котором определено color_data. И тогда только render json, если и когда поиск имеет имя AND color_data, но не раньше этого. –
Вы не можете этого сделать. Resque является асинхронным, поэтому не гарантируется завершение до конца цикла запроса. – Yule