我正在进行一些元编程,我将可访问的属性添加到模型中,并希望知道如何检查并查看这些属性是否可访问。
查看文档但没有找到参考。
我知道我可以做object.instance_methods
之类的事情,但实际上并没有将其过滤到可访问的内容。
是否有某些方法会返回可访问的属性?
答案 0 :(得分:1)
使用accessible_attributes
和protected_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]
我希望这个帮助