【问题标题】:ActiveAdmin deletes associations when simply trying to render show page仅尝试呈现显示页面时,ActiveAdmin 会删除关联
【发布时间】:2017-07-17 20:47:46
【问题描述】:

这是 show.html.arb 文件:

attributes_table_for resource do
  row :id
  row :state
  row :request_type
  row :assignee
  row :assigner
  row :unassigned
  row :deleter
end

attributes_table_for resource.request do
  row :id
end

这里是 ActiveAdmin.register 请求部分:

show do |resource|
  render 'show'
end

这是用于呈现此页面的链接:

<%= content_tag(:li, link_to('View', accounting_request_path(accnt_request))) %>

那么我的问题是,这到底为什么告诉我它正在尝试删除关联??

这是一个 GET 请求,而不是一个 PUT 或 POST 请求。

这是确切的错误:

Failed to remove the existing associated request. The record failed to save when after its foreign key was set to nil.

当我只是查看此记录的显示页面时,确实是删除了关联。

【问题讨论】:

  • 请粘贴显示操作的全部日志。
  • 找到了问题...感谢您提醒我查看日志,而不仅仅是错误消息。呸!我将分享问题所在。

标签: ruby-on-rails ruby-on-rails-3.2 activeadmin


【解决方案1】:

问题没有显示这一点 - 而是其中一个模型作为 after_initialize 回调在其中声明。

日志告诉我,这里调用了这个方法,上面写着build_requestable

app/models/concerns/requestable.rb:6:in `build_requestable'
app/views/accounting_requests/_show.html.arb:6:in `block in _app_views_accounting_requests__show_html_arb___512970926778810589_70108054037800'
app/views/accounting_requests/_show.html.arb:1:in `new'
app/views/accounting_requests/_show.html.arb:1:in `_app_views_accounting_requests__show_html_arb___512970926778810589_70108054037800'
app/ui/stewgle/tasks/accounting_requests.rb:33:in `block (2 levels) in <top (required)>'
lib/monkies/aa_views_pages_base.rb:62:in `block in build_page_content'
lib/monkies/aa_views_pages_base.rb:60:in `build_page_content'
app/controllers/application_controller.rb:57:in `set_time_zone'

现在,以下是文档中有关此回调的内容:

最后触发 after_find 和 after_initialize 回调 发现并实例化的每个对象, after_initialize 在新对象实例化后触发 嗯。

这意味着只要执行ar_object_thingy.associated_thingy,它就会调用after_initialize 回调。在该回调中,我正在执行self.build_thingy(示例)以在多态关系中创建一个对象。这实际上破坏了与导致错误的未持久对象的当前关系。

TLDR;

在这种情况下,问题不在于 ActiveRecord。我正在使用一个名为 after initialize 的模型回调,该回调调用了一个方法,该方法打破了 belongs_to 关系,每次我通过父项查找父记录的子项时,此模型都会验证是否存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多