我是Rails的新手,我正在尝试使用一些元编程来自动执行一些操作。我想要做的是基本上生成一个无数据库的Rails模型。这样做的原因是我可以根据文件中的某些元数据生成模型,验证,表单等。
现在的问题是我尝试进行元编程时可能会出现一些错误。
这个(简单示例)有效:
class User
include ActiveModel::Validations
validates_presence_of :forename, :surname
def initialize(attrs = {})
self.class.class_eval { attr_accessor :forename, :surname }
send("forename=", attrs['forename'])
send("surname=", attrs['surname'])
end
end
但这不是:
class User
include ActiveModel::Validations
def initialize(attrs = {})
self.class.class_eval { attr_accessor :forename, :surname }
# moved the validation line in here
self.class.class_eval { validates_presence_of :forename, :surname }
send("forename=", attrs['forename'])
send("surname=", attrs['surname'])
end
end
我意识到它不起作用的方式是因为我有这个模型的表格。当我使用空字段多次提交提交时,我会看到之前的错误消息(即错误消息在不同的请求中累积)。
我必须在代码中做一些非常错误的事情,所以想知道更有经验的人是否可以引导我走向正确的方向。