【发布时间】: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