在表单中,我需要在 has_many 集合中显示固定数量的模型,无论它们是否存在。例如:
假设有一个游戏,可以输入 10 个分数。但并非所有都需要输入 - 您可以输入从 0 到 10 的任何位置。但该表单仍始终显示 10 个分数输入。
这就是我实现它的方式:
class Game < ActiveRecord
has_many :scores
accepts_nested_attributes_for :scores
alias :scores, :original_scores
def scores
return original_scores if caller[0] =~ /.*fields_for.*/
scores_to_display = original_scores # could be anywhere from 0 to 10
# fill out the array up to 10
return scores_to_diplay
end
end
这很丑陋,因为我本质上覆盖了应该由 has_many 返回的 ActiveRecord::Relation 对象 - 这就是为什么如果调用者不是表单助手,我会返回 original_scores ,否则这会破坏删除和其他关联方法。我不确定如何更清洁。有什么想法吗?
谢谢!