У меня есть следующий код. Я все еще новичок в Ruby on Rails. Как видите, я повторяюсь 4 раза.Что было бы лучшим способом закодировать это, если предложение else?
Я пытался что-то вроде этого:
if @property.nil? || @property.status_id == 144 || (@property.status_id <= 16 && current_user.nil?) || (@property.status_id <= 16 && current_user.id != @property.user_id)
Но это дает мне много ошибок в случае @property равна нулю. Потому что тогда @ property.status_id не может быть вызван, поскольку @property равен нулю.
В любом случае, я думаю, что опытный Ruby on Rails coder получает эту идею.
def show
@property = Property.find(params[:id]) rescue nil
if @property.nil?
flash[:error]=t("The_property_was_not_found")
redirect_to root_path
return
end
if @property.status_id == 144
flash[:error]=t("The_property_was_not_found")
redirect_to root_path
return
end
if @property.status_id <= 16 && current_user.nil?
flash[:error]=t("The_property_was_not_found")
redirect_to root_path
return
end
if @property.status_id <= 16 && current_user.id != @property.user_id
flash[:error]=t("The_property_was_not_found")
redirect_to root_path
return
end
@images = Image.find(:all, :conditions =>{:property_id => params[:id]})
end
корень
Как правило, вам не нужно иметь значения дескриптора страницы представления. Как кто-то может попасть на страницу показа собственности, если она не существует в первую очередь? –
Вы должны комбинировать свои тесты с '&&' и '||', вот для чего они предназначены. – meagar
@beerlington это сайт для брокера недвижимости. Старые свойства удаляются из таблицы, заставляя посетителей со старыми ссылками получить сообщение об ошибке. У вас есть точка, возможно, они не должны удалять старые свойства. Во всяком случае, это гарантия. –