如何检查Rails应用程序可以访问哪些属性



我正在进行一些元编程,将可访问的属性添加到模型中,并想知道如何检查这些属性是否可访问。

查看了文档,但找不到参考资料。

http://api.rubyonrails.org/classes/ActiveModel/MassAssignmentSecurity/ClassMethods.html#method-i-attr_accessible

我知道我可以做object.instance_methods之类的事情,但那十几个并不能真正将其过滤为可访问的。

是否有一些方法可以返回可访问的属性?

使用accessible_attributesprotected_attributes

class User < ActiveRecord::Base
  attr_accessible :first_name, :last_name
end
User.accessible_attributes
# => #<ActiveModel::MassAssignmentSecurity::WhiteList: {"", "first_name", "last_name"}>
User.protected_attributes
# => #<ActiveModel::MassAssignmentSecurity::BlackList: {"id", "type"}>

如果您在类中调用attr_protected而不是attr_accessible,那么除黑名单中的属性外,您的所有属性都可以访问。

假设您有一个具有以下属性的User模型::id, :lastname, :firstname, :email你的模型类是:

class User < ActiveRecord::Base
  attr_accessible :lastname, :firstname
end

你可以有这样的可访问列表:

User.attr_accessible[:default].to_a
=> [:lastname, :firstname]

此外,您还可以拥有不可访问属性的列表:

User.new.attributes.keys - User.attr_accessible[:default].to_
=> [:id, :email]

我希望这能帮助

相关内容

  • 没有找到相关文章

最新更新