我正在使用rails,我有一个名为Car的activerecord类。在我正在构建的应用程序中,应用程序允许用户在一个页面中添加新车,如果不是,他们可以选择已经存在的那个。
我在尝试提出解决方案时遇到了困难,虽然它们都可以工作但只会在代码的某些部分执行,因为它在if / else语句中。
ad_group_controllers.rb
git reset --soft HEAD@{1}
基本上,if语句表明,如果广告组参数中有文件,则会创建一个汽车,如果没有,则应该保留
if params[:ad_group][:file]
@car = Car.create(year: params[:ad_group][:car][:year],model: params[:model],make_id: params[:make], trim: params[:trim])
@car.update(file: params[:ad_group][:file])
@ad_group.car = @car
else
@car = Car.find(params[:ad_group][:car][:id])
@trim = params[:trim] == 'none' ? nil : params[:trim]
@promotional_logo = params[:promotional_logo].blank? || params[:promotional_logo].downcase == 'none' || params[:promotional_logo] == '0' ? nil : PromotionalLogo.find(params[:promotional_logo])
if (@promotional_logo && @ad_group.promotional_logo.nil?) || (@promotional_logo.nil? && @ad_group.promotional_logo)
@ad_group.promotional_logo = @promotional_logo
@ad_group.adjust_for_promotional_logo
end
@ad_group.update_attributes(make: @make, car: @car, trim: @trim, client: @client, rollover: params[:ad_group][:rollover], promotional_logo: @promotional_logo || nil)
AdGroup.fields.each do |field|
@ad_group[field] = params[:ad_group][field]
end
end
@ad_group.ads.each do |ad|
url = @ad_group.car.file.blank? ? nil : @ad_group.car.file.url
car = @ad_group.car.file.blank? ? nil : @ad_group.car
ad.images.find_by(name: 'car').update(url: url, car: car)
url = @ad_group.promotional_logo.blank? ? nil : @ad_group.promotional_logo.file.url
logo = @ad_group.promotional_logo.blank? ? nil : @ad_group.promotional_logo
ad.images.find_by(name: "promotional_logo").update(url: url, promotional_logo: logo)
ad.texts.find_by(name: "client_name").update(content: @client.name)
if @ad_group.car.blank?
car_name = ''
else
car_name = "#{@car.year} #{@make.name} #{@car.model}"
car_name += " #{@car.trim}" unless params[:trim] == 'none' || params[:trim].blank?
end
ad.texts.find_by(name: "car_name").update(content: car_name)
以下代码必须针对这两种情况执行。如果不重复if和else中的代码,最好的方法是什么。