在没有数据库的情况下在Rails中动态创建模型验证和属性

时间:2016-06-16 15:10:41

标签: ruby-on-rails model metaprogramming

我是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

我意识到它不起作用的方式是因为我有这个模型的表格。当我使用空字段多次提交提交时,我会看到之前的错误消息(即错误消息在不同的请求中累积)。

我必须在代码中做一些非常错误的事情,所以想知道更有经验的人是否可以引导我走向正确的方向。

0 个答案:

没有答案