从rails中的模型方法中删除对列的访问权限

时间:2011-06-23 12:50:28

标签: ruby-on-rails

我正在使用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方面做到以上几点。

请提出解决此问题的建议..

1 个答案:

答案 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。

希望这有帮助!