使用它所属模型的属性在 has_many 关联中设置模型属性的最全面方法是什么?

问题描述

我有两个 ActiveModel,MultivariateExperiment 其中 has_many MultivariateExperimentVariant。相反,一个 MultivariantExperimentVariant belongs_to 一个 MultivariateExperiment

MultivariateExperiment 有一个属性 experiment_name

MultivariantExperimentVariant 具有属性 nameweighting

我希望变体的 name 格式为 experiment_name_0experiment_name_1 等。 例如,给定以下 MultivariateExperiment:

mve = MultivariateExperiment.create({ experiment_name: 'user_signup' })

我想要一种让相关变体成为的编程方式:

mve.multivariate_experiment_variants.create({ weighting: 1 }) # expected name: "user_signup_0"

mve.multivariate_experiment_variants.create({ weighting: 1 }) # expected name: "user_signup_1"

mve.multivariate_experiment_variants.create({ weighting: 2 }) # expected name: "user_signup_2"

我最初想把它放在 after_commit 回调中,但在代码审查中被告知要避免它,因为该回调很麻烦(不知道为什么)

我查看了一些其他回调,但它们似乎都不够全面,无法涵盖可以创建关联的无数方式,例如:

# 1st approach
mve.multivariate_experiment_variants.create({ weighting: 1 })

# 2nd approach
variant = MultivariateExperimentVariant.create({ weighting: 1 })
mve << variant
mve.save

# 3rd approach
mve.multivariate_experiment_variants.build({ weighting: 1 })
mve.save


# etc. etc.

那么,鉴于创建关联的各种方法,是否有任何机制或方法可以使用其所属模型的属性成功计算 has_many 关系中模型的属性?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)