我有一个表单,我需要创建两个对象:sale
和organization
。这发生在sales_controller
内。
为简洁起见,模型及其属性为:
sale
amount (integer)
organization_id (uuid)
organization
name (string)
sale belongs_to organization
organization has_many sales
这就是sales new
的样子。它有一个销售输入,用户将输入,它还有一个输入组织名称,用户将输入。提交后,用户将创建一个新的销售(并创建一个与该销售相关联的新组织)。
我想弄清楚sales_controller中create
方法的最佳做法是什么。
def create
@sale = Sale.new(sale_params) #assume sale_params permits organization_id and amount
@organization = Organization.create(params[:name])
#@sale.organization_id = @organization.id
if @sale.save
render json: @sale
else
render json: sale, status: :unprocessable_entity
end
end
@organization = Organization.create(...)
感觉不对。有没有办法做多个对象提交" Rails" -way?
答案 0 :(得分:1)
由于您可能已经在以前的销售中创建了一个组织,因此您可以使用:
@organization = Organization.find_or_create_by(name: params[:name])
然后通过关联sale.organization_id继续。您还需要对Organization.name具有唯一性约束。