【问题标题】:Rails Concerns And Conditional FeaturesRails 关注点和条件特性
【发布时间】:2016-12-26 18:49:14
【问题描述】:

我有一个运行良好的Addressable 关注点,但在我的某些模型中,我需要邮寄地址和国家/地区,而在其他模型中,我只需要一个简单的地址,并对国家/地区做出假设。

有什么好办法吗? include 没有办法传递变量。也许它可以查看类上的 const。

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

更新

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

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:

    根据http://api.rubyonrails.org/classes/ActiveSupport/Concern.html,看起来您可以继承关注点。所以,我最终从Addressable 中提取了SimpleAddressable

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      • 2012-12-21
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      相关资源
      最近更新 更多