0
我在用下面的代码麻烦:Authlogic具有嵌套属性和多态关联
User < AR
acts_as_authentic
belongs_to :owner, :polymorphic => true
end
Worker < AR
has_one :user, :as => :owner
accepts_nested_attributes_for :user
end
Employer < AR
has_one :user, :as => :owner
accepts_nested_attributes_for :user
end
我想根据用户类型来创建登记表,并包括认证字段,诸如用户名和密码。我现在这样做:
UserRegistrationController < AC
#i.e. a new Employer
def new
@employer = Employer.new
@employer.build_user
end
...
end
我再包括与fields_for
用户领域。所有的视图渲染良好,但这里有一个问题:我不能建立一个用户,它告诉我:password
是一个错误的方法,所以我猜测验证逻辑已被绕过。 我该怎么办?我做错了吗?我应该放弃多态协会以支持单表继承吗?无论我做什么,我都必须确保它与Authlogic很好地搭配。
嘿感谢!我会尝试一下。我应该在创建操作中保存什么?我应该分别保存吗? 我宁愿坚持has_one关联,它似乎更具可扩展性。另外,我现在不太担心空间。 – ferparra 2010-04-06 14:44:29
我认为你需要分开保存两者。 Rails将无法确定多态关系的另一端是哪种类型的模型。尝试| @employer = Employer.new(params [:employer])| @ employer.save | @user = User.new(params [:user] .merge!(:owner => @employer))。您需要从模型中移除accepts_nested_attributes_for。 – mark 2010-04-06 14:59:10
嘿,你的原始表单定义中,你确定你没有在所有者字段中定义用户属性?我会发布另一个答案,因为也许这应该工作。 ^请参阅编辑原始答案。 – mark 2010-04-06 15:00:22