我有2个模特班,员工和&公司。外部库只生成员工ID。如果他的详细信息已存在,我正在尝试更新员工详细信息,否则我需要创建新的员工详细信息。以下是create method的代码:
def create
if !@emp= Details.find_or_create_by_emp_id(params[:details][:emp_id])
@emp = Details.new(params[:details])
// some logic goes here
else
@emp.update_attributes(params[:details])
render action: "show"
end
end
但是这总是使用现有的emp_id创建一个新记录,而不是更新与特定emp_id相关的表行。如何使它工作?
答案 0 :(得分:1)
你可以试试这个:
def create
@emp = Details.find_by_emp_id(params[:details][:emp_id])
if @emp
@emp.update_attributes(params[:details])
render action: "show"
else
@emp = Details.new(params[:details])
//other stuff
end
end
因此,如果员工已经存在,则设置为@emp,否则@emp设置为nil
答案 1 :(得分:0)
您使用的是find_or_create错误。它需要标识符和哈希:
if Detail.find_or_create_by_emp_id(params[:detail][:emp_id], params[:detail])
#success
else
#fail
end
注意:您的模型名称和参数似乎都是复数,这违反惯例,您确定这是您的意图吗?