Ruby on rails 在Rails中以编程方式删除关联
我正在为Spree编写一个扩展,我想删除一个现有的关联Ruby on rails 在Rails中以编程方式删除关联,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我正在为Spree编写一个扩展,我想删除一个现有的关联 def need_assoc eval <<-EOC class Project < ActiveRecord::Base has_one :status ... end EOC end 给定以下代码: class Project < ActiveRecord::Base has_one :status ... end class项目
def need_assoc
eval <<-EOC
class Project < ActiveRecord::Base
has_one :status
...
end
EOC
end
给定以下代码:
class Project < ActiveRecord::Base
has_one :status
...
end
class项目
如何在运行时删除对
has_one:status
的调用?我想删除关联和关联的方法。不幸的是,这是一个相当复杂的DSL调用,向类中添加了许多方法,您必须删除所有这些方法,这可能不值得
创建一个新的类CleanProject、使用组合或继承向其添加项目对象,然后只传递对所需项目部分的调用可能更容易
另一方面,如果您想询问如何删除与此项目关联的状态(不是删除状态与项目相关的事实,而是从单个项目中删除单个状态),您只需调用:
status.project_id = nil
status.save
把它删掉,只在你需要的时候再加上,怎么样 也许您只需要类中的关联,该类在设计为从cronjob或批处理执行的方法中使用?然后您可以评估代码以引入关联
def need_assoc
eval <<-EOC
class Project < ActiveRecord::Base
has_one :status
...
end
EOC
end
def需要协会
我不得不问。你为什么要这么做?好的一面是什么?也许这回答了你的问题: