问题描述
我有两个 ActiveModel,MultivariateExperiment
其中 has_many
MultivariateExperimentVariant
。相反,一个 MultivariantExperimentVariant
belongs_to
一个 MultivariateExperiment
。
MultivariateExperiment
有一个属性 experiment_name
。
MultivariantExperimentVariant
具有属性 name
和 weighting
。
我希望变体的 name
格式为 experiment_name_0
、experiment_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 (将#修改为@)