在Rails 3中使用Devise和attr_accessible进行响应
|
我正在用Rails 3构建API,并使用devise处理一些身份验证。
我通常使用response_with方法为各种资源返回xml / json。
例如GET /groups.xml将路由到
def index
respond_with Group.all
end
对于各种资源,这在我的网站上都能正常工作,并返回格式正确的json或xml,其中包含每个组的所有属性。
但是,当我调用GET /users.xml时,它只响应每个用户属性的有限子集。事实证明,这里只会返回attr_assessible中定义的属性-我怀疑这是设计的“功能”,因为其他任何模型都不是这样。
谁能启发我?
编辑:这是在Devise 1.4.2中修复的。详情请见下文
没有找到相关结果
已邀请:
2 个回复
系漏
您会注意到,此代码将#accessible_attributes的结果合并到任何传入的选项中。因此,您可以指定:only选项,例如:
这将覆盖对Devise施加的限制,并生成仅包含您指定的字段的xml输出。您将需要包括要公开的每个字段,因为一旦使用:only,您将胜过常规操作。 在这种情况下,我认为您将无法继续在控制器中使用response_with快捷方式,因为您将需要直接指定xml输出。您可能必须退回到老式的response_to块:
正如您已经发现的那样,您还可以仅在模型类中添加要通过attr_accessible公开的其他字段。但是,这将带来使这些字段可大规模分配的附加副作用,在这种情况下,您可能不一定希望这样做。
博沮富教全
这意味着您现在可以定义在调用to_json时默认公开的属性(和方法!)列表。 Respond_with也使用to_json,因此它适用于API。 例如,user.rb