2015-02-26 7 views
0

у меня есть пользователи таблицы и услуги таблицы:Обновление связи между существующими записями

class User < ActiveRecord::Base 
    has_many :services, through: :services_users 
end 

class Service < ActiveRecord::Base 
    has_many :users, through: :services_users 
end 

с таблицей присоединения:

create_table "services_users", id: false, force: :cascade do |t| 
    t.integer "service_id", limit: 4 
    t.integer "user_id", limit: 4 
end 

У меня есть форма, чтобы выбрать пользователя и услугу, и я хотят, чтобы связать их, форма выбирает сервис, то пользователь

и я следующее

user_dispatcher_path(user,service), method: :put 

с маршрутом

put "dispatcher" => "userrs#dispatcher", as: :dispatcher 

В моем контроллере пользователей я начал

def dispatcher 
    ? 
end 

тогда я застрял:

Я думаю, что я могу использовать update_all из, может быть, я могу спасти два идентификатора непосредственно на services_users

Как это сделать?

ответ

0

Если нет ActiveRecord модели для ServicesUsers, попробуйте этот

@user = User.find(params[:user_id]) 
@user.services << Service.find(params[:service_id]) 

Если пользователь/дом уже не присутствует, используйте создать. или еще лучше, используйте find_or_create_by

альтернативный способ моделирования вашего требования.

http://guides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association - Это именно то, что вам нужно. assemblysies = services, parts = users.

+0

Практически - я создал модель ServicesUsers - но не получил ошибку метода для создания! поэтому я сделал его активной моделью записей и добавил контроллер, и теперь он ищет шаблон - – tbrooke

+1

На второй мысли мне кажется, что Rails должен заботиться о таблице соединений, и мне не нужно будет обращаться к ней напрямую – tbrooke

+0

Я отредактировал ответ на работу без модели ServicesUser. Дайте мне знать, если это работает –