ActiveRecord无法检索某些列

时间:2019-03-21 00:30:52

标签: ruby-on-rails activerecord

我不知道为什么在ActiveRecord中无法检测到某些列。 请参见下面。东西是prev_or_next

表定义在这里。 enter image description here

记录信息是这样的。 enter image description here

这是代码。

  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。 有谁描述发生了什么事以及如何解决? 预先感谢。

1 个答案:

答案 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") }

此枚举定义有些恶作剧。当我消除此问题后,它恢复了。