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

时间:2013-01-17 04:06:48

标签: ruby-on-rails-3

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

查看文档但没有找到参考。

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

我知道我可以做object.instance_methods之类的事情,但实际上并没有将其过滤到可访问的内容。

是否有某些方法会返回可访问的属性?

2 个答案:

答案 0 :(得分:1)

使用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,则可以访问除黑名单中的所有属性。

答案 1 :(得分:0)

假设您拥有包含以下属性的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]

我希望这个帮助