Ruby on rails 3 Rails 3:As json with include选项不考虑包含关联的As_json重新定义
我有两个模型Ruby on rails 3 Rails 3:As json with include选项不考虑包含关联的As_json重新定义,ruby-on-rails-3,json,Ruby On Rails 3,Json,我有两个模型 Class ModelA < ActiveRecord::Base has_many :model_bs end Class ModelB < ActiveRecord::Base belongs_to :model_a def as_json(options = {}) { :whatever => 'hello world' } end end classmodela:model_b)时,我希望它返回
Class ModelA < ActiveRecord::Base
has_many :model_bs
end
Class ModelB < ActiveRecord::Base
belongs_to :model_a
def as_json(options = {})
{
:whatever => 'hello world'
}
end
end
classmodela“你好,世界”
}
结束
结束
当我调用
model_a.as_json(:include=>:model_b)
时,我希望它返回一个json,其中包含所有的model_b,它是这样做的,但使用了我的as_json重新定义,它不这样做,因为它只使用默认的定义。有没有办法用我自己的方法而不是原来的方法?感谢Rails 3中的,因为json方法调用可序列化的散列来获取属性散列。它们共享相同的“选项”参数。在您的情况下,覆盖可序列化的_散列将得到预期的结果
def serializable_hash(options = {})
{:whatever => 'hello world'}
end
但是,我的建议是,不要改写惯例,而是根据“super”的结果进行操作,如下所示:
def serializable_hash(options = {})
hash = super
has[:name] = "hello world"
hash
end