Соединяем ассоциацию API Rails с Ember

У меня две модели: user и card.

Когда пользователь создает новую карту, я хочу связать пользователя с этой картой. (Можно предположить, что user_id равно 1)

Для части Rails,

card.rb

class Card < ActiveRecord::Base
  has_and_belongs_to_many :users
end

user.rb

class User < ActiveRecord::Base
  has_and_belongs_to_many :cards
end

Для Ember части,

app/routes/card/new.js

  actions: {
    save(title, description) {
      let user = this.get('store').find('user', 1);

      const newCard = this.get('store').createRecord('card', {
        title,
        description,
        user
      });
      newCard.save().then((card) => {
        // go to the new item's route after creating it.
        this.transitionTo('card.card', card);
      });
    }
  }

В настоящее время я могу связать их через консоль Rails. Я хочу знать, как я могу связать их обоих через API Rails и данные Ember, чтобы при создании нового card он связывал current user вместе с этим card.

Ссылка на репозиторий (Rails): https://github.com/ghoshnirmalya/hub-server

Ссылка на репозиторий (Ember): https://github.com/ghoshnirmalya/hub-client


person Nirmalya Ghosh    schedule 09.07.2016    source источник


Ответы (1)


Вам нужно обновить код в вашем контроллере:

https://github.com/ghoshnirmalya/hub-server/blob/master/app/controllers/cards_controller.rb

В вашем методе create вам нужно взять полученный вами идентификатор пользователя и установить соединение.

РЕДАКТИРОВАТЬ:

def create
  @card = Card.new(card_params)

  if @card.save
    @card.users << User.find(params[:data][:attributes][:user_id]) if params[:data][:attributes][:user_id] # this is my guess
    render json: @card
  else
    render json: @card, :status => 422
  end
end
person Albin    schedule 09.07.2016
comment
извините за вопрос новичка, но есть идеи, как я могу это подключить? - person Nirmalya Ghosh; 09.07.2016
comment
Я обновил код. Возможно, это не совсем правильное местоположение вашего идентификатора пользователя в параметрах. Здесь Rails делает кое-что под капотом. << фактически создает запись в таблице карты базы данных user_cards (или card_users). Вот почему это должно быть сделано после сохранения. - person Albin; 09.07.2016