我有2个模型,用户和common_apps。
用户has_one:common_app。
在此之前,我以用户has_many common_apps编写代码,但是我不知道如何为has_one关联重写该代码。主要的困惑是如何在common_app控制器中构造“new”。
当我尝试时,我得到一个未定义的方法错误。
undefined method `new' for #<CommonApp:>
这是我的代码 - &gt;
def new
if current_user.common_app.any?
redirect_to current_user
else
@common_app = current_user.common_app.new
end
end
def create
@common_app = current_user.common_app.build(common_app_params)
if @common_app.save
flash[:success] = "Common App Created!"
redirect_to root_url
else
redirect_to 'common_apps/new'
end
end
def show
@common_apps = current_user.common_app
end
如果这是一个has_one关联,你会如何重组这个?
我想我知道'创造'应该如何 - &gt;
def create
@common_app = current_user.build_common_app(common_app_params)
if @common_app.save
flash[:success] = "Common App Created!"
redirect_to root_url
else
redirect_to 'common_apps/new'
end
end
答案 0 :(得分:0)
您的新动作应如下所示:
def new
if current_user.common_app.present?
redirect_to current_user
else
@common_app = current_user.build_common_app
end
end
您也可以在没有传递任何参数的情况下致电build_common_app
,这会为current_user
初始化一个空的CommonApp。