ActiveRecord не может получить какой-либо столбец - PullRequest
0 голосов
/ 21 марта 2019

Я не могу понять, почему какой-то столбец не может обнаружить в 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

Когда я вижу сценарий, как if is [: 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 голосов
/ 21 марта 2019

Извините, наконец, я понял.Я осмотрел свою модель.Вот проблема.

class InsertScript < ApplicationRecord
  enum prev_or_next: {"prev": 1, "next": 2}
  enum activate: {"active": true, "non_active": false}

  default_scope { where("activate = true") }

Это определение перечисления внесло некоторый вред.Когда я устранил это, он выздоровел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...