2016-06-30 6 views
0

У меня есть две модели: Project с has_one :performer и Performer с belongs_to :projectКак удалить отношение belongs_to - has_one между объектами

У меня есть проект объекта с отношениями с исполнителем, как project.performer

Как я могу удалить эти отношения? Мне нужен атрибут performer_id, чтобы иметь значение nil.

+0

Как возможно, что ваш внешний ключ равен нулю. ? Каковы проблемы, с которыми вы сталкиваетесь при управлении отношениями. Почему вы хотите удалить отношение? Дать более подробную информацию может помочь решить ваш вопрос –

ответ

3

Вы только что обновили свой объект Project.

class Project < ActiveRecord::Base 
    ... 
    def remove_performer 
    update(performer_id: nil) 
    end 
    ... 
end 

Добавить метод remove_performer, то вы можете использовать его, чтобы удалить исполнителя из проекта.

+0

большое большое спасибо – dev85

1

Если вы меня поняли, вы можете просто удалить has_one и belongs_to с ваших моделей.

UPDATE
Чтобы установить performer_id в nil для конкретного объекта вы можете сделать

project.update_column :project, nil 

Это будет пропускать валидации. Конечно, ваша схема базы данных должна позволять значение NULL для projects.performer_id.

Примечание: В Rails 4 update_column равно update_columns.
Подробнее в docs.

+0

нет, мне нужно удалить это отношение только для текущего объекта – dev85

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