테이블 HABTM 가입 이 코드를 사용하는 "true":업데이트 내가 두 모델 사이의 관계를
h = house.persons.find(params[:person_id])
h.update_attribute(:used, true) # ERROR used column doesn't exists in persons table
조인 테이블에 사용 된 열을 어떻게 업데이트 할 수 있습니까? 감사합니다. .
테이블 HABTM 가입 이 코드를 사용하는 "true":업데이트 내가 두 모델 사이의 관계를
h = house.persons.find(params[:person_id])
h.update_attribute(:used, true) # ERROR used column doesn't exists in persons table
조인 테이블에 사용 된 열을 어떻게 업데이트 할 수 있습니까? 감사합니다. .
명사, 집 및 명시 적으로 코드 계층의 join_table과 같은 세 테이블 간의 has_many 및 belongs_to 관계를 사용하는 것이 좋습니다. 아래에 주어진
class House
has_many :persons, through: :person_houses
has_many :person_houses
end
class Person
has_many :houses, through: :person_houses
has_many :person_houses
end
#join table
class PersonHouse
belongs_to :person
belongs_to :house
end
그런 다음 당신은 사용 속성을 업데이트 할 수 있습니다
person_house = house.person_houses.find_by(person_id: params[:person_id])
person_house.update(used: true)
편집 당신이 당신의 가입 테이블에 속성을 추가 할 경우, HABTM를 사용하지 귀하의 참여와 상호 작용하는 안 테이블 (이것을 설명하는 의견의 최대 값을 신용하십시오)
정확하게 코드를 작성하고 있지만 다음과 같은 오류가 발생했습니다. NoMethodError (정의되지 않은 메소드 'to_sym'for nil : NilClass 의미 : to_s) : – gui12344455
조인 테이블 인스턴스를 업데이트 할 때이 오류가 발생합니까? 어떤 버전의 레일을 사용하고 있습니까? – xeon131
네, 다음 행 : person_house.update (사용 : true) – gui12344455
그래도 HABTM을 사용해야합니다. http://guides.rubyonrails.org/association_basics.html#choosing-between-has-many-through-and-has- 과 속한 많은 것 – Kris
조인 테이블에 추가 데이터를 저장하려는 경우 HABTM을 사용하지 마십시오. 'has_many though :'을 사용하십시오. HABTM은 극도로 제한되어 있으며 사용자가 간접적으로 조인 테이블을 작성/질의 할 수 있습니다. – max