这是我的模特:
validates :name, uniqueness: true, presence: true
validates :slug, uniqueness: true, presence: true
# Callbacks
before_validation :generate_slug
# Methods
def to_param
slug
end
def generate_slug
self.slug ||= name.parameterize
end
在尝试创建新记录时,我收到错误消息:" Slug无法通过我的浏览器显示空白"
那就是说 - 当使用Ruby控制台进行测试时,它运行得很完美:
Item.create! name:"Stack Overflow"
["slug", "stack-overflow"], ["name", "Stack Overflow"]
不知道从哪里开始,任何想法如何让这个错误发挥得很好?
答案 0 :(得分:2)
在create
回调之后看看Rails guides,validations
回调,因此在验证您的generate_slug
方法时,如果尚未调用,则slu is是没有。
您可能希望使用before_validation
代替
修改
也许你的slug在你的验证之前不是nil,可能是由于数据库默认值或表单字段发布,请尝试使用此代码
def generate_slug
self.slug = name.parameterize if self.slug.blank?
end