나누기 : 내가 볼 모두가 첫번째 해시 <some person>.add_interests(<some hashes>)
를 호출 할 때 로그에레일 : 빌드 방법은 내가 지금처럼 여러 개체를 추가하려고하고있어 루프
class Person < ActiveRecord::Base
has_many :interests
...
def add_interests(interest_hashes)
interest_hashes.each do |interest|
Rails.logger.debug "person.apply_interests: interest: #{interest.inspect}"
interests.build(:name => interest.name, :category => interest.category)
end
save!
end
...
end
- 아니 오류 또는 예외입니다. 빌드 메서드를 제거하면 루프가 예상대로 작동합니다.
- 빌드 방법을 호출 할 때 어떤 현상이 발생합니까?
- 내가 시도하는 것을 달성하는 더 좋은 방법은 무엇입니까?
편집 :
interest_hashes.inspect
출력 예 :
[{"category"=>"Interest", "name"=>"Formula One"}, {"category"=>"Musical instrument", "name"=>"Guitar"}]
함수의 매개 변수는 interest_hash입니다. 대신 매개 변수가 아닌 인스턴스 변수를 사용하고, 배열처럼 반복하고 ... mmm 객체를 포함합니까? interest_hash에 포함 된 것을 명확히 설명해 주시겠습니까? – nathanvda
혼란을 드려 죄송합니다. 일부 실수를 수정하고 이름을 변경했습니다. 해시의 배열을 포함하는'관심 _ 해시 '를'관심의 해시 '로 변경했습니다. 그러나 루프가 중단되는 원인은 아닙니다 (원래 코드는 약간 다릅니다). – Gob
제 생각에'interest'에'name'을 호출 할 때 NoMethodError가 발생하지만, 어떤 이유로 든 당신에게 보이지 않습니다. 아래 내 대답을 참조하십시오. –