Rails验证非模型输入

时间:2014-04-24 22:35:53

标签: ruby-on-rails validation

我正在使用Rails 4.1构建API。我的一个调用需要2个输入字段,并调用第三方API以获取更多数据。然后,它使用该数据制作ActiveRecord模型。

我应该如何验证输入?我没有从2个输入字段中创建模型。

注意:在调用第三方API之前需要对它们进行验证

3 个答案:

答案 0 :(得分:2)

根据您撰写的内容,我会说您要查看attr_accessor并使用ActiveRecord来验证您的表单数据:

#app/models/model.rb
Class Model < ActiveRecord::Base
    attr_accessor :your, :inputs
    validates :your, :inputs, presence: true
end

这将创建virtual attributes,然后您可以使用标准ActiveRecord validation功能进行验证。我相信,由于您的模型通常会为您的数据表属性创建实例方法,因此您可以使用attr_accessor属性实现相同的功能

正如@Mohammed所述,您可以通过使用您的数据创建instance模型来验证输入:

#app/controllers/your_controller.rb
Class Controller < ApplicationController
    def create
        @model = Model.new(input_params)
        @model.valid?
    end
    private
    def input_params
        params.require(:model).permit(:your, :inputs)
    end
end

答案 1 :(得分:1)

答案 2 :(得分:0)

这些输入是否会被用作模型中的属性?如果是这样,为什么不初始化一个新对象并测试其有效性?

def new
  foo = Foo.new(inputs)
  foo.valid?
end

否则,您可以使用扩展ActiveModel::Model模块的普通旧PORO来模仿AR模型(​​验证等)。您可以在此处找到更多详细信息:http://blog.remarkablelabs.com/2012/12/activemodel-model-rails-4-countdown-to-2013