2011-01-10 2 views
1

내가 가지고 내가 그냥 USER_ID, EVENT_ID있다라는 EventUsers를 마이그레이션 및 모델에 참여하기 전이 의견라는 만든 속성 : 문자열레일 - 조인 모델이 아니라 속성을 가진 레코드 만들기

create_table :events_users, :id => false do |t| 
     t.integer :user_id 
     t.integer :event_id 
     t.string :opinion # extra attribute I made 
    end 

및 event.rb

has_and_belongs_to_many :users 

및 user.rb

has_and_belongs_to_many :events 

은 내가 J에 추가 할 수 있습니다 oin 모델

@user = User.find(session[:user_id]) 
    @event = Event.find(params[:id]) 
    @user.events << @event 

그러나 내가 그것을하기 전에 ...... 어떻게 의견 속성을 일부 문자열로 설정하고 삽입합니까?

답변

3

조인 모델에 외래 키 이외의 필드가 있으면 HABTM 관계를 사용하지 않아야합니다. 당신과 같이 관련 각 모델을 의견 등의 중간 모델을 만들고이 있어야합니다

class Event < ActiveRecord::Base 
    has_many :opinions 
    has_many :users, :through => :opinions 
end 

class User < ActiveRecord::Base 
    has_many :opinions 
    has_many :events, :through => :opinions 
end 

class Opinion < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :event 
end 

업데이트 : 의견을 추가하려면

, 당신은 가능성이 편안한 인터페이스를 생성 할 것입니다. 나도 사용자, 이벤트 내에서 중첩 된 경로를 추가하여 시작하는 것, 또는 두 가지 모두

map.resources :users do |user| 
    user.resources :opinions 
end 

그런 다음 표준 편안하고 행동 (새, 생성, 편집, 업데이트 등) 및 해당 뷰와 함께 의견 컨트롤러를 추가 할 수 있습니다. 이 표준 편안한 인터페이스를 구축하는 방법에 자원의 톤이있다, 그러나 나는이 시작 것 :

http://guides.rubyonrails.org/routing.html#resource-routing-the-rails-default

http://guides.rubyonrails.org/routing.html#nested-resources

+0

어떤 선택이 어떻게 당신이 그것을 사용하고 있습니까? –

+0

나는 Love라는 모델을 만들었지 만, Lofe에 Love를 singularizing하는 오류가 발생하여 초기화되지 않은 상수 오류가 발생했습니다. 그런 다음 personal.rb => \t (belongs_to : user; belongs_to : 이벤트) 및 user.rb => (has_many : personals; has_many : events, : through :> : personals) 모델을 작성했습니다. and event.rb => (has_many : personals; has_many : users, : through :> : personals) 그러나 속성 (: opinion)을 알 수없는 속성 오류로 계속 가져옵니다. 어떤 아이디어? – ChrisWesAllen

+0

@ user.events << Event.create (attrs)가 새 이벤트를 만듭니다 .... – ChrisWesAllen

관련 문제