【问题标题】:Pass Validation on Form Fields Before Friendly ID Creation - Custom在创建友好 ID 之前通过表单字段验证 - 自定义
【发布时间】:2014-03-14 21:50:35
【问题描述】:

我目前有两个模型

位置产品

我已将其配置为,当在我的生产模型中创建记录时,它会根据从产品创建期间选择的位置收集的信息创建自定义 url

extend FriendlyId
friendly_id :slug_candidates, use: :slugged

def should_generate_new_friendly_id?
  name_changed? or location_id_changed?
end

def slug_candidates
 [
  [location.media_type, location.state, location.name, :name, :sku]
 ]
end

我目前正在测试的是当用户决定不填写那些非常重要的字段时,它会在创建之前抛出错误消息

validates :name, presence: true
validates :sku, presence: true
validates :location_id, presence: true

在我的情况下,它忽略了验证器并首先尝试创建 slug。如果我将自定义属性删除到 url 创建并列为

def slug_candidates
   [
    [:name, :sku]
   ]
end

它会正常工作,首先运行字段验证器。假设因为这两个直接是给定模型上的属性。

有人知道为什么会这样吗?我需要首先选择验证器,因为它包含 url 的所有相关信息。

【问题讨论】:

    标签: validation url ruby-on-rails-4 friendly-id


    【解决方案1】:

    已解决

    def slug_candidates
        if self.location_id.nil?
           self.errors.add(:location_id)
        else
           [
              [location.media_type, location.state, location.name, :name, :sku]
           ]
       end
    end
    

    【讨论】:

      猜你喜欢
      • 2020-02-25
      • 1970-01-01
      • 1970-01-01
      • 2012-10-17
      • 1970-01-01
      • 2014-12-03
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      相关资源
      最近更新 更多