我正在使用rails 2.3.11。 我有一个博客模型(id,title,description,referenced_publications) referenced_publications不是必填字段。
默认情况下,在我的app_Config中,我将referenced_publications保持为false。
我已经在VIEWS的配置中包含了检查是否启用/禁用以提交博客的条件。
如果有人从某个地方而不是从我的UI /
做某事,那么该实例从我的模型方面,
我想如果从配置启用referenced_publications,那么实例可以保存,但是如果没有启用,并且只有当用户尝试使用属性referenced_publications然后抛出错误或者如果他没有使用refer_publications,然后它可以保存没有错误
但是如何从MODEL方面做到以上几点。
请提出解决此问题的建议..
答案 0 :(得分:1)
我认为您正在寻找自定义验证。
如果您的Blog
模型有条件地要求存在属性,则每次保存Blog
时,都需要检查该属性是否立即需要,如果是,则验证其存在。像这样:
class Blog < ActiveRecord::Base
validate :referred_publications_present_if_required?
private
def referred_publications_present_if_required?
if AppConfig.require_referred_publications
errors.add(:referred_publications, "must be present")
end
end
end
有关详细信息,请参阅Rails Guides: Validations。封装检查以查看模型中的方法是否需要属性也是明智的,上面的视图和上面的方法都可以使用,而不是在两个地方都将检查放到AppConfig。
希望这有帮助!