Rails onboarding验证'建议'帮助用户添加数据?

时间:2016-12-01 20:49:16

标签: ruby-on-rails validation

我想在模型中定义建议,方法与验证相同。

基本上,就像验证是一种标准做法一样,我喜欢类似的入职模式...

class Product
  suggest :title, message: "should be between a little bit longer"
  suggests_presence_of :url, :brand, :model, :sku
end

然后在视图中可以有:

Missing #{model.suggestions.count} suggestions.
We strongly suggest adding url for this product

这几乎完全像验证器,但只是建议用户应该添加一些内容。

1 个答案:

答案 0 :(得分:1)

我的解决方案:

在此用例中,使用自定义上下文(内置在验证api的一部分中)效果很好:

class User < ActiveFoo::Bar
  with_options({on: :onboarding}) do |onboarding|
    onboarding.validates_presence_of :name, message: "You're more likely to be successful with a real name"
    onboarding.validates :bio, length: { maximum: 500 }
    onboarding.validates :registration_number, length: { is: 6 }
  end
end

然后获取建议列表:

user.valid?(:onboarding)

这将标准验证API与自定义上下文结合使用:https://guides.rubyonrails.org/active_record_validations.html#on