使用Rails 3.1 & Ruby 1.9.2。Rails 3 - reject_if如何使用構建?
我在問題和答案模型之間有has_many關聯。問題模型有這樣一行:
accepts_nested_attributes_for :answers, :reject_if =>
lambda { |n| n[:content].blank? }, :allow_destroy => true
我的觀點是有點複雜,我只想說,它返回的問題,每個問題可以有答案0-5的嵌套數組的數組。我確信這部分工作正常。
在我的控制,我運行下面的代碼來創建和保存問題&答案:
def create_questions
params[:question].each do |q|
new_question = Question.new(q)
...
if q[:answers] != nil # this only solves the problem of
# a question having 0 answers
q[:answers].each do |a|
new_question.answers.build(a)
end
end
new_question.save
end
end
我的問題是,我得到保存的空白內容的答案。我認爲answers.build
覆蓋了reject_if
,但我不確定。我很清楚,我可以使用一百萬個解決方案來解決這個問題,但傳統和最短(代碼方式)的方式是什麼?
您的最後一行是我的解決方案,謝謝。另外,您在控制器中更改參數散列的建議是富有創意的。我更喜歡處理這個特定的問題,但它可能在未來有用。 – UKatz