Как преобразовать строку в существующий атрибут в модели при создании - PullRequest
0 голосов
/ 04 июня 2019

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

Мой массив = ["_646_maturity", "_660_maturity", "_651_maturity", "_652_maturity", "_641_maturity"]


class Audit < ApplicationRecord

  belongs_to :user

  before_save :calculate_scoring

  def calculate_scoring
    scoring = []

    models = ActiveRecord::Base.connection.tables.collect{|t| t.underscore.singularize.camelize.constantize rescue nil}
    columns = models.collect{|m| m.column_names rescue nil}

    columns[2].each do |c|
      if c.include? "maturity"
        Rails.logger.debug 'COLUMN : '+c.inspect
        scoring.push(c)
      end
    end

    getMaturity = ""

    scoring.each do |e|
       getMaturity = e.to_sym.inspect
       Rails.logger.debug 'MATURITY : '+getMaturity
    end


  end

end

Печать журнала>'MATURITY : :_651_maturity'

Я ищу значение :_651_maturity, которое является атрибутом моего сообщения.

Я пытался .to_sym, но это не работает ..

Спасибо за помощь!

1 Ответ

1 голос
/ 04 июня 2019

Внутри calculate_scoring вы можете использовать self, чтобы указать на запись, которую вы сохраняете.Так что self._651_maturity = <some_value>, self[:_651_maturity] = <some_value> и self['_651_maturity'] - все допустимые методы для установки _651_maturity.

Также вы можете сделать что-то вроде:

my_attrib = '_651_maturity'
self[my_attrib] = 'foo'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...