2013-12-25 3 views
1

Может ли кто-нибудь посоветовать мне, что лучше всего использовать при добавлении user_id к вложенным моделям при создании/обновлении родительской модели?Добавить user_id в nested_attributes с сильными параметрами

Предположим, у меня есть модель Band с множеством назначенных моделей Song. Любой пользователь может редактировать информацию Band и добавлять любые Song с помощью метода fields_for на вид. Таблица Songs имеет столбец user_id, который должен быть заполнен current_user.id.

Я пытаюсь понять, как справиться с этим в моем BandsController, используя сильные параметры, но не повезло.

BandsController band_params метод выглядит более или менее похож, что:

def band_params 
    params.require(:band).permit(
    :name, :location, :city, :country_name, :country_code, 
    songs_attributes: [:id, :name, :duration, :_destroy] 
) 
end 

Я могу взломать этот метод и перебирать каждый элемент songs_attributes добавления идентификатора пользователя, но не есть ли лучше/безопасные/наращивание функциональности для такой операции? Если нет, то какой из них наиболее подходящий?

Заранее спасибо.

+0

Вы хотите, чтобы каждая песня имела user_id? Не каждая группа? – Philip7899

+0

Да, мне нужно знать, какой пользователь создал песню, а создание песни доступно только из раздела «fields_for» формы группы. – mbajur

+0

Я написал драгоценный камень, который автоматически установит created_by_id и updated_by_id во время сохранения - https://github.com/house9/clerk - с рельсами 4 вы должны установить из git (на данный момент) – house9

ответ

0

Я написал драгоценный камень, который будет установлен created_by_id и updated_by_id автоматически во время сохранения - https://github.com/house9/clerk

, если вы используете рельсы 4, вы должны установить с помощью git

1

Если предположить, что группа уже существует, прежде чем добавляется песня:

def update 
    @band = Band.find(params[:id]) 
    @band.user = current_user 
    @band.update_attributes(band_params)  
end 

Если вы создаете группу и песню, в то же время:

def create 
    @band = Band.new(band_params) 
    @band.user = current_user 
    @band.save  
end 
+0

Я неправильно понял вопрос. Я меняю свой ответ и вскоре опубликую его. – Philip7899

+0

Уверенная вещь;) Пожалуйста, имейте в виду, что у группы есть столбец 'user_id', но это не всегда то же самое, что и' user_id' песни. Мне нужно знать, какой пользователь добавил песню в группу, вот почему. – mbajur

+0

Что должно делать ваше приложение. Из того, что я слышал до сих пор, я не уверен, что ваше приложение так же спокойно, как могло бы быть. – Philip7899

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