我有一个房东和评论课。楼主有1:N评论。创建房东时,它会在同一表单(嵌套)上创建评论。
提交表单时,将调用 users_controller#create。
我想检查数据库是否已经存在具有相同名称、城市和州的房东,并将评论添加到该房东而不是创建新的。
def create
#check if a landlord of the same name already exists and add comments to that
if Landlord.find_by_name(params[:name]) && Landlord.find_by_city(params[:city])&& Landlord.find_by_province(params[:province])
@landlord_exists = Landlord.find_by_name(params[:name]) && Landlord.find_by_city(params[:city])&& Landlord.find_by_province(params[:province])
@landlord_exists.comments.build
@landlord_exists.comments[0].setIP request.remote_ip
@landlord_exists.save
else
@landlord = Landlord.new(params[:landlord])
@landlord.comments[0].setIP request.remote_ip
if @landlord.save
flash[:success] = "Thank you for submitting a Landlord"
redirect_to landlords_path
else
end
end
end
将#1 更新为
def create
@landlord = Landlord.where(:name => params[:name], :city => params[:city], :province => params[:province]).first_or_create!
@landlord.comments[0].setIP request.remote_ip
if @landlord.save
redirect_to landlords_path
else
end
end
线
@landlord = Landlord.where(:name => params[:name], :city => params[:city], :province => params[:province]).first_or_create!
似乎返回一个 nil 对象,因此在调用 setIP 时会引发错误。什么会导致这种情况?我已经在终端中尝试过了,虽然我使用的是硬编码值,但它运行良好。