rails具有多个角色的模型类

时间:2014-07-11 08:20:22

标签: ruby-on-rails

我正在寻找一种方法来实现类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。

1 个答案:

答案 0 :(得分:0)

你所尝试的几乎是正确的。不是吗?
1)在地址模型中添加新列“角色”。
2)在地址模型中将角色设置为可序列化(您已编写的内容)。
3)在视图页面中包含一个多选下拉列表,您可以在其中放置下拉列表。

<%= form.select :roles,
                        [["BillingAddress","BillingAddress"], ["InstallationAddress","InstallationAddress"]],
                        :prompt => "Select Roles",
                        :multiple => true
%>

您无需为address_roles提供任何新模型。而且,如果您不期待这样的话,我很抱歉。

谢谢!