두 가지 모델, 사용자 및 프로모션이 있습니다. 아이디어는 프로모션이 많은 사용자를 가질 수 있으며 사용자는 많은 프로모션을 가질 수 있다는 것입니다.has_and_belongs_to_many 관계에 레코드 추가
class User < ActiveRecord::Base
has_and_belongs_to_many :promotions
end
class Promotion < ActiveRecord::Base
has_and_belongs_to_many :users
end
고유 ID가없는 promotions_users 테이블/모델도 있습니다. user_id 및 promotions_id를 참조합니다.
class PromotionsUsers < ActiveRecord::Base
end
그래서 사용자를 프로모션에 추가하려면 어떻게합니까? 나는 이런 식으로 뭔가를 시도했다 :
이 다음과 같은 오류가 발생user = User.find(params[:id])
promotion = Promotion.find(params[:promo_id])
promo = user.promotions.new(promo)
:
NoMethodError: undefined method `stringify_keys!' for #<Promotion:0x10514d420>
내가 대신이 줄을 시도하는 경우 : 프로모션 = user.promotions.new (promo.id를)
내 probl에 매우 쉬운 솔루션이 있음을 확신TypeError: can't dup Fixnum
:
나는이 오류 그리고 저는 솔루션을 올바른 방향으로 찾고 있지 않습니다.
감사합니다 그것을 또는 사용자 모델을 저장 할 필요가 홍보를 만들
입니다. 내가 물건을 너무 복잡하게 만들었다 고 나는 생각했다. –
<< 또한 연관을 저장합니까? – Nonconformist
@ Coolguy123 예,'collection << (object, ...)'는 collection.push와 collection.concat의 별명입니다. 이렇게하면 부모 객체에 대한 저장 또는 업데이트 호출을 기다리지 않고 SQL을 즉시 업데이트 할 수 있습니다. – stereoscott