フォームでは、モデルが存在するかどうかにかかわらず、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 を返すのはそのためです。どうすればきれいにできるのかわかりません。何かご意見は?
ありがとう!