rails dependent destroy寻找不存在的表

时间:2018-02-20 08:00:16

标签: ruby-on-rails activerecord dependent-destroy

我收到错误:

  

PG :: UndefinedTable:ERROR:relation" profiles_rsl_codes"不存在第5行:

当我试图销毁个人资料时。

我有一个名为rsl_codes_profiles的表,在我的个人资料模型中我有

  has_many :rsl_codes_profiles, class_name: "RslCodesProfile", dependent: :destroy

在我的RslCodesProfile课程中我有:

class RslCodesProfile < ActiveRecord::Base
  belongs_to :rsl_code
  belongs_to :profile

  validates :rsl_code_id, :presence => true
  validates :profile_id, :presence => true
  validates :rel_type, :presence => true
end

可能有一些迁移和撤消迁移以及更改该表的名称,然后在可能产生影响的情况下重新迁移。

我的应用程序的全局搜索未找到任何对profiles_rsl_codesProfilesRslCodes或其中的单数的引用。

错误回溯仅指向我所做的@profile.destroy,其余的跟踪都是框架内容。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

尝试重新创建数据库rake db:drop db:create db:migrate

答案 1 :(得分:0)

向那些花时间试图帮助我的人道歉。错误在于代码我没有添加到问题中。

我必须在我的RslCode模型中更改它

has_and_belongs_to_many :visible_rsl_codes, class_name: "RslCode", foreign_key: "code_visible_to_profile_ids"
has_and_belongs_to_many :visible_comment_rsl_codes, class_name: "RslCode", foreign_key: "comment_visible_to_profile_ids"

试图在RslCode中使用我删除code_visible_to_profile_idscomment_visible_to_profile_ids后的字段

到这个

has_many :code_rsl_code_profiles, -> { where rel_type: 'code' }, class_name: 'RslCodesProfile', source: :rsl_codes_profiles
has_many :visible_rsl_codes, :through => :code_rsl_code_profiles, class_name: 'RslCode', source: :rsl_code

has_many :comment_rsl_code_profiles, -> { where rel_type: 'comment' }, class_name: 'RslCodesProfile', source: :rsl_codes_profiles
has_many :visible_comment_rsl_codes, :through => :comment_rsl_code_profiles, class_name: 'RslCode', source: :rsl_code

因为我添加了连接表来实现结果并且没有调整这些关系。