Я получил пример из этого блога: https://robertheaton.com/2015/08/31/migrating-bajillions-of-database-records-at-stripe/ В основном пытаюсь прокси сохранить в файл project.description таблицу my_proxy.
class Project < ApplicationRecord
def self.my_proxy(model_prop_name, my_prop_name)
model_prop_name_set = :"#{model_prop_name}="
original_model_prop_name_set = :"original_#{model_prop_name_set}"
# Question: In the blog, it used method_defined? which returned false, I updated it to attribute_method?
# bug then now, alias_method fails to recognize model_prop_name_set (can't find it on the
# class) although it should be an instance method.
# I basically want to alias this ActiveRecord instance method, inside the self.my_proxy
# class method
alias_method original_model_prop_name_set, model_prop_name_set if attribute_method?(model_prop_name_set)
define_method(model_prop_name_set) do |val|
public_send(original_model_prop_name_set, val)
my_proxy.public_send(:"#{signoff_prop_name}=", val)
end
end
myf_proxy :description, :description
end
В проекте есть поле описания, поэтому он имеет описание = атрибут установки. Я хочу отправить это в прокси-запись. Этот пример, вероятно, устарел, method_defined? часть в примере блога вернула false, поэтому мне пришлось перейти на attribute_method? Часть alias_method затем засасывает
NameError (undefined method `description=' for class `#<Class:0x00007fddc0689318>')
Также нашел этот пост alias_method на ActiveRecord :: Base приводит к NameError , скажем, использовать alias_attribute, но выбрасывает это в это может привести к слишком глубокой ошибке в стеке.