如何在对象之间删除关系belongs_to - has_one

时间:2016-06-30 07:38:48

标签: ruby-on-rails ruby

我有两个模型:Project has_one :performerPerformer belongs_to :project

我有与project.performer

等表演者关系的对象项目

如何删除此关系?我需要属性performer_id才能拥有值nil

2 个答案:

答案 0 :(得分:3)

您只需更新Project对象。

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

添加方法remove_performer,然后您可以使用它从项目中删除表演者。

proj = Project.new
proj.remove_performer

答案 1 :(得分:1)

如果我理解您的错误,您只需从模型中移除has_onebelongs_to即可。

<强>更新
要为特定对象将performer_id设置为nil,您可以执行

project.update_column :project, nil

这将跳过任何验证。当然,您的数据库架构应允许NULL的{​​{1}}值。

注意:在Rails 4中projects.performer_id等于update_column
阅读docs中的更多内容。