我不知道为什么在ActiveRecord中无法检测到某些列。
请参见下面。东西是prev_or_next
。
这是代码。
def script_insert(page, lang, user)
contents = page[:body].force_encoding("UTF-8").html_safe
InsertScript.all.each do |is|
doc = Nokogiri::HTML::DocumentFragment.parse(contents)
binding.pry
if eval(is.condition)
max = doc.css(is.section).count - 1
num = eval(is.where)
pos = num ? doc.css(is.section)[num] : doc.css(is.section)[0]
if pos.present?
div = Nokogiri::XML::Node.new "div", doc
div.inner_html = is.script
pos.add_previous_sibling(div) if is[:prev_or_next] == "1"
pos.add_next_sibling(div) if is[:prev_or_next] == "2"
contents = doc.to_html
end
end
end
当我看到类似的脚本时 如果是[:prev_or_next] ==“ 1”
遗憾的是[:prev_or_next]为零。 这是恶棍的断点。
[16] pry(#<#<Class:0x00007fa152365f88>>)> is
=> #<InsertScript:0x00007fa1599a1f30
id: 2,
title: "関連コンテンツ",
condition: "true",
section: "img",
prev_or_next: nil,
where: "max",
script:
"<script async src=\"//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js\"></script>\r\n<ins class=\"adsbygoogle\"\r\n style=\"display:block\"\r\n data-ad-format=\"autorelaxed\"\r\n data-ad-client=\"ca-pub-7141760577373107\"\r\n data-ad-slot=\"1107433854\"></ins>\r\n<script>\r\n (adsbygoogle = window.adsbygoogle || []).push({});\r\n</script>",
memo: "",
activate: "active",
created_at: Fri, 01 Feb 2019 14:02:50 JST +09:00,
updated_at: Fri, 01 Feb 2019 14:09:07 JST +09:00>
我的应用是Rails 5.2.2和Ruby 2.5.0。 有谁描述发生了什么事以及如何解决? 预先感谢。
答案 0 :(得分:0)
对不起,最后我明白了。 我已经检查过我的模型了。这是问题所在。
class InsertScript < ApplicationRecord
enum prev_or_next: {"prev": 1, "next": 2}
enum activate: {"active": true, "non_active": false}
default_scope { where("activate = true") }
此枚举定义有些恶作剧。当我消除此问题后,它恢复了。