我们正在进行一个使用Flex和rails的项目
WebORB
一切都很好,直到我们开始把前端和后端绑在一起。
SessionService.rb
class SessionService
def view_session
session = RequestContext.get_session
if session[:user_id]
user = User.find_by_id(session[:user_id], :include => [:contact, {:roles => :permissions}])
else
user = User.find_by_username("anonymous", :include => [:contact, {:roles => :permissions}])
end
user
end
end
UserService.rb
class UserService
def register_user user
user.save
session = RequestContext.get_session
session[:user_id] = user.id
RequestContext.set_session session
return true
end
end
User.as
package com.XXX.XXXXX.vo
{
[Bindable]
[RemoteClass(alias="com.XXX.XXXXX.vo.User")]
public class User
{
...
public var roles:Array;
...
}
}
register_user
在传入User对象的情况下调用。创建用户并更新会话,问题是在此之后的任何方法调用都会产生副作用
User.find(XX).roles[XX].skip_time_zone_conversion_for_attributes
create_time_zone_conversion_attribute?
activerecord/lib/activerecord/attribute_methods.rb
include?
在上面。
当被调用时
method_missing
:include => [..., :roles...]
这导致角色被序列化为
AMF
从我收集到的
attribute_methods.rb
,应该不可能更改
skip_time_zone_conversion_for_attributes
在一个实例中(
Role.skip_time_zone_conversion_for_attributes = []
我们已经转向传递非模型类,但这不是我们想要的。
是否有可能找出WebORB中的哪些代码正在更改
对于模型的所有实例,而不是模型类本身?