我正在寻找一种方法来实现类Address(BillingAddress,ShippingAddress e.t.c)的多重角色,避免在我的项目中使用第二个表address_roles。有什么办法吗?
我的地址模型如下:
class Address < ActiveRecord::Base
self.inheritance_column = nil
serialize :roles
attr_accessible :street, :number, :postal, :city, :country
end
class InstallationAddress < Address
end
class BillingAddress < Address
end
class ShippingAddress < Address
end
我希望能够将角色保存为数组,例如[“BillingAddress”,“InstallationAddress”]
编辑1:我应该如何在模型中描述它才能工作?例如,InstallationAddress.all将仅返回具有角色InstallationAddress的地址,或者如果我有belongs_to:user,则将如何检索user.installation_address。
答案 0 :(得分:0)
你所尝试的几乎是正确的。不是吗?
1)在地址模型中添加新列“角色”。
2)在地址模型中将角色设置为可序列化(您已编写的内容)。
3)在视图页面中包含一个多选下拉列表,您可以在其中放置下拉列表。
<%= form.select :roles,
[["BillingAddress","BillingAddress"], ["InstallationAddress","InstallationAddress"]],
:prompt => "Select Roles",
:multiple => true
%>
您无需为address_roles提供任何新模型。而且,如果您不期待这样的话,我很抱歉。
谢谢!