代码之家  ›  专栏  ›  技术社区  ›  Tristan Havelick

rails 1.0-使用composed_of会给我错误的参数数目(1对5)错误

  •  0
  • Tristan Havelick  · 技术社区  · 15 年前

    我正在开发一个rails 1.0应用程序(我无法升级,这是一个奇怪的情况),我正在尝试使用:composed_的功能。我有一门课叫StreetAddress:

    class StreetAddress
      attr_reader :address, :address2, :city, :state_id, :zip_code
    
      def initialize(address, address2, city, state_id, zip_code)
        @address = address
        @address2 = address2
        @city = city
        @state_id = state_id
        @zip_code = zip_code
      end
    
    
    end 
    

    还有一个叫酒店的模特班

    class Hotel < ActiveRecord::Base
      composed_of :street_address
      # ...
    
    end
    

    其中包含列:

    "id", "brand_id", "code", "location_name", "address", "address2", "city", "state_id", "zip_code", "phone_number", "phone_ext", "fax_number", "time_zone", "url", "room_service_email", "manager_name", "manager_email"
    

    但是,当我尝试访问聚合时,会得到一个错误:

    >> h = Hotel.find(1)
    => #<Hotel:0x38ad718 @attributes={"fax_number"=>"1-623-420-0124", "city"=>"Twin
    Falls", "address2"=>"285", "brand_id"=>"1", "code"=>"XZWUXUSZ", "manager_email"=
    >"molestie.tellus.Aenean@erosnec.ca", "url"=>"http://www.xycdkzolukfvu.hom", "ph
    one_number"=>"1-805-706-9995", "zip_code"=>"72436", "phone_ext"=>"48060", "id"=>
    "1", "manager_name"=>"Igor Mcdowell", "room_service_email"=>"Duis.risus@Donecvit
    ae.ca", "time_zone"=>"America/Boise", "state_id"=>"15", "address"=>"P.O. Box 457
    , 7405 Dignissim Avenue", "location_name"=>"penatibus et magnis"}>
    >> h.street_address
    ArgumentError: wrong number of arguments (1 for 5)
        from (eval):3:in `initialize'
        from (eval):3:in `new'
        from (eval):3:in `street_address'
        from (irb):6
    

    为什么?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Mike Dotterer    15 年前

    composed_of将尝试用它知道的字段调用对象的构造函数。在您的情况下,它只发送street_address属性(它似乎不存在,因此可能为零)。确保使用mapping属性集声明您的composed_of,以便它将发送所有属性。

    composed_of :street_address, :mapping => [%w(address address), %w(address2 address2), %w(city city), %w(state_id state_id), %w(zip_code zip_code)
    
    推荐文章