2016-01-07 3 views
0

У меня есть функция, которая сохраняет ссылки на YouTube фильмы,Как хранить несколько значений в записи

angular.forEach(response.results, function(item){ 

    $scope.youtubeTrailer = []; 
    $scope.youtubeTrailer.push(item.key); 
    var youtubeLink = $scope.youtubeTrailer.toString(); 
    createTrailer.create({ 
    link:  youtubeLink, 
    movie_id: $scope.movieListID.id 
    }).then(init); 

}) 

трейлере рельсы контроллер,

def create 
    respond_with Trailer.create(trailer_params) 
end 

private 
def trailer_params 
    params.require(:trailer).permit(
    :link, 
    :movie_id 
) 
end 

И модель прицепа рельсы,

belongs_to :movie 

forEach создает новую запись для каждого трейлера.

{"id":1,"movie_id":"312221","link":"LsjX5dqHLuw","created_at":"2016-01-05T14:15:35.681Z","updated_at":"2016-01-05T14:15:35.681Z"}, 
{"id":2,"movie_id":"281957","link":"EIELwayIIT4","created_at":"2016-01-05T14:46:25.248Z","updated_at":"2016-01-05T14:46:25.248Z"}, 
{"id":3,"movie_id":"291270","link":"WQkHA3fHk_0","created_at":"2016-01-05T14:50:15.563Z","updated_at":"2016-01-05T14:50:15.563Z"}, 
{"id":4,"movie_id":"291270","link":"LUloSK4x3qc","created_at":"2016-01-05T14:50:15.651Z","updated_at":"2016-01-05T14:50:15.651Z"}, 
{"id":5,"movie_id":"209112","link":"nIGtF3J5kn8","created_at":"2016-01-05T15:21:11.372Z","updated_at":"2016-01-05T15:21:11.372Z"}, 
{"id":6,"movie_id":"209112","link":"yViIi3gie2c","created_at":"2016-01-05T15:21:11.469Z","updated_at":"2016-01-05T15:21:11.469Z"}, 
{"id":7,"movie_id":"209112","link":"Onh7NbZ7F8o","created_at":"2016-01-05T15:21:11.550Z","updated_at":"2016-01-05T15:21:11.550Z"}, 
{"id":8,"movie_id":"312221","link":"LsjX5dqHLuw","created_at":"2016-01-05T15:26:19.701Z","updated_at":"2016-01-05T15:26:19.701Z"}, 

Как вы можете видеть, что это создает 3 записи для 3 трейлеров с тем же movie_id>209112.

Можно ли сохранить данные, чтобы они сгруппировали эти трейлеры с одним и тем же movie_id вместе? Так это будет выглядеть так,

{"id":312221, 
    "links"{ 
    {"link":"LsjX5dqHLuw","created_at":"2016-01-05T14:15:35.681Z","updated_at":"2016-01-05T14:15:35.681Z"}, 
    } 
} 

{"id":281957, 
    "links"{ 
    {"link":"EIELwayIIT4","created_at":"2016-01-05T14:46:25.248Z","updated_at":"2016-01-05T14:46:25.248Z"}, 
    } 
} 

{"id":291270", 
    "links"{ 
    {"link":"WQkHA3fHk_0","created_at":"2016-01-05T15:21:11.550Z","updated_at":"2016-01-05T15:21:11.550Z"}, 
    {"link":"yViIi3gie2c","created_at":"2016-01-05T15:21:11.469Z","updated_at":"2016-01-05T15:21:11.469Z"}, 
    {"link":"LUloSK4x3qc","created_at":"2016-01-05T15:21:11.372Z","updated_at":"2016-01-05T15:21:11.372Z"}, 
    } 
} 

{"id":209112", 
    "links"{ 
    {"link":"Onh7NbZ7F8o","created_at":"2016-01-05T15:21:11.550Z","updated_at":"2016-01-05T15:21:11.550Z"}, 
    {"link":"yViIi3gie2c","created_at":"2016-01-05T15:21:11.469Z","updated_at":"2016-01-05T15:21:11.469Z"}, 
    {"link":"nIGtF3J5kn8","created_at":"2016-01-05T15:21:11.372Z","updated_at":"2016-01-05T15:21:11.372Z"}, 
    } 
} 

{"id":312221, 
    "links"{ 
    {"link":"LsjX5dqHLuw","created_at":"2016-01-05T15:26:19.701Z","updated_at":"2016-01-05T15:26:19.701Z"} 
    } 
} 

ответ

0

Ваш вероятно сохранение записей правильно в БД, вы можете просто нужно создать вложенную ответ JSon в рельсах. Поэтому трейлеры включены в фильм json.

Вы можете сделать это несколько различных способов, но попробовать это ...

В контроллере изменить respond_with к

def create 
    @trailers = Trailer.create(trailer_params) 
    respond_with Movie.where(:id => @trailers.map(:movie_id)) 
end 

И в них модели кино, включают в себя сбор прицепы

class Movie < ActiveRecord::Base 

    def as_json(options={}) 
    { 
     :id   => id, 
     :trailers => trailers 
    } 
    end 

end 
+0

Я не уверен, если вы неправильно поняли вопрос, или я не понимаю ответа, но я не вижу, как решить мою проблему. Моя проблема в том, что функция forEach создает новую запись для каждой ссылки трейлера. Я хотел бы создать один содержащий объект, который имеет все соответствующие ссылки трейлера. –

+0

Да, я неправильно понял, я думал, что ссылка была объектом. То, что вы действительно хотите, это список фильмов с вложенными трейлерами. Вы хотите, чтобы все фильмы для трейлеров вы только что загрузили? – Swards

+0

Вместо того чтобы сохранить значение каждой ссылки и значение movie_id в одной записи, я хотел бы создать одну запись со всеми значениями ссылок для этого фильма. Таким образом, результат будет похож на '{" id ": 1," movie_id ": 312221, " ссылки "{ {" link ":" LsjX5dqHLuw "," created_at ":" 2016-01-05T15: 26: 19.701 Z "," updated_at ":" 2016-01-05T15: 26: 19.701Z "} } }' –

Смежные вопросы