Rails关注和条件特征

时间:2016-12-26 18:49:14

标签: ruby-on-rails activerecord

我有Addressable关注效果很好,但在我的某些模型中,我需要邮寄地址和国家/地区,在其他模式中,我只想要一个简单的地址,并对此做出假设国家。

这样做有好办法吗? include没有办法传递变量。也许它可以看一下班上的常数。

也许有一种方法可以让SimpleAddressable关注具有基本字段,并且可以以某种方式继承另一个可寻址关注点?尽管如此,我还没有看到关注继承作为一种选择。

更新

我以前会查看self.columns,但这在我的测试用例中给了我奇怪的错误。

1 个答案:

答案 0 :(得分:0)

根据http://api.rubyonrails.org/classes/ActiveSupport/Concern.html,您似乎可以继续关注。所以,我最终从SimpleAddressable提取Addressable

module SimpleAddressable
    extend ActiveSupport::Concern

    included do
        validates :address, length: { maximum: 200 }, allow_nil: true
        validates :city, length: { maximum: 50 }, allow_nil: true
        validates :region, length: { maximum: 50 }, allow_nil: true
        validates :postal_code, length: { maximum: 20 }, allow_nil: true
    end
end

module Addressable
    extend ActiveSupport::Concern
    include SimpleAddressable

    included do
        validates :mailing_address, length: { maximum: 200 }, allow_nil: true
        validates :mailing_city, length: { maximum: 50 }, allow_nil: true
        validates :mailing_region, length: { maximum: 50 }, allow_nil: true
        validates :mailing_postal_code, length: { maximum: 20 }, allow_nil: true
        belongs_to :country, optional: true
    end
end