2012-11-07 48 views
0

我有一个所有者模型至少has_one地址,并为它accep_nested_attributes。当加载一个业主,为新的动作,我预计:load_resource方法打造像@ owner.build_address的关联,但是这不下面的代码发生:cancan load_resource为嵌套的资源不建立has_one协会

class OnwersController < ApplicationController 
    load_and_authorize_resource 
    load_resource :address, :through => :owner, :singleton => true, :parent => false 

这是预期的行为我必须自己做@ owner.address = @address?

谢谢

+0

我和你有同样的问题。看来CanCan可以使用“Class.new”构建资源。所以它不知道这种关系。 – gfreezy

回答

0

您可以参考答案。 https://stackoverflow.com/a/7015900/950843

它适用于我,除了我不得不忽略:new和:create操作。

+0

谢谢你回答@gfreezy,但我认为我们的情况稍有不同。在你的例子中,你的控制器必须通过一个对象加载它自己的模型。在我的OwnersController中,我想从所有者模型加载其他模型(地址),这就是为什么我使用:parent => false加载地址时。请注意,我已经使用:through选项。我将这行代码解释如下:load_resource:address(加载地址),:through =>:owner(对于Owner对象),:singleton => true(它只有一个地址),:parent => false(this不是AddressesController) – Gus