我在名为pure (+) <*> [1,2,3] <*> [4,5,6]
-- [5,6,7,6,7,8,7,8,9]
pure (+) <*> ZipList [1,2,3] <*> ZipList [4,5,6]
-- ZipList [5,7,9]
的模型中有一个after_save
回调,我在其他名为Field
的模型上创建了动态实例方法,但是代码无效,我无法找出它的错误,因为逻辑非常简单。请帮助。
User
然后我在class field < ActiveRecord::Base
after_create :create_user_methods
private
def create_user_methods
User.class_eval do
define_method(self.name) do
#some code
end
define_method(self.name + "=") do
#some code
end
end
end
end
中创建Field实例,就像这样
rails console
然后在User类实例上调用该方法,如此
Field.create(name: "test_method")
但它引发了错误
未定义的方法 User.new.test_method
for ....
答案 0 :(得分:0)
我得到了修复,我无法在self
块中使用class_eval
,因为它的值是用户模型而不是Field
类对象,因此修复是:
class field < ActiveRecord::Base
after_create :create_user_methods
private
def create_user_methods
name = self.name # here self points to field object
User.class_eval do
define_method(name) do
#some code
end
define_method(name + "=") do
#some code
end
end
end
end