使用first_or_create检索对象时,发出对对象创建注释的问题

时间:2013-06-23 16:52:28

标签: ruby-on-rails ruby ruby-on-rails-3

提前道歉,铁杆新手。

房东有N个评论,评论有1个房东

问题:我为什么不发表评论? (返回一个零对象)

在landlords_controller中#create: 如果凭证已存在于数据库中,则创建房东或找到一个:

@landlord = Landlord.where(:name => params[:landlord][:name],
:city => params[:landlord][:city], :province => params[:landlord][:province]).first_or_create!

之后我致电@landlord.comments[0].setIP request.remote_ip

我收到错误undefined method setIP for nil:NilClass

在房东控制器中提供新方法和创建方法

def new
  @landlord = Landlord.new
  @landlord.comments.build
end

def create      
#check if a landlord of the same name already exists and add comments to that db entry
@landlord = Landlord.where(:name => params[:landlord][:name], :city =>       params[:landlord][:city], :province => params[:landlord][:province]).first_or_create!
    #:comment =>  params[:landlord][:comments_attributes]
    @landlord.comments[0].setIP request.remote_ip

    if @landlord.save     

     redirect_to landlords_path
    else

end

注释控制器是空的,如果这是一个问题,我不肯定。

1 个答案:

答案 0 :(得分:2)

 @landlord.comments.create if @landlord.comments.empty? #add this step
 @landlord.comments[0].setIP request.remote_ip

这是因为你第一次创建时,即没有房东对象,first_or_create!将创建landload对象而不做任何评论。