0

我不知道,如果物業和業主之間的關係,工作或沒有,當我嘗試查詢我得到這個錯誤:一個一對多的關係[Ruby on Rails的]

Loading development environment (Rails 3.2.13) 
irb(main):001:0> Owner.find(1).properties 
    Owner Load (18.1ms) SELECT "owners".* FROM "owners" WHERE "owners"."id" = ? LIMIT 1 [["id", 1]] 
    Property Load (0.1ms) SELECT "properties".* FROM "properties" WHERE "properties"."owner_id" = 1 
ActiveRecord::SubclassNotFound: The single-table inheritance mechanism failed to locate the subclass: 'House'. This error is raised because the column 'type' is reserved for storing the class in case of inheritance. Please rename this column if you didn't intend it to be used for storing the inheritance class or overwrite Property.inheritance_column to use another column for that information. 
    from /var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/inheritance.rb:143:in `rescue in find_sti_class' 
    from /var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/inheritance.rb:136:in `find_sti_class' 
    from /var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/inheritance.rb:62:in `instantiate' 
    from /var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/querying.rb:38:in `block (2 levels) in find_by_sql' 
    from /var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/querying.rb:38:in `collect!' 
    from /var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/querying.rb:38:in `block in find_by_sql' 
    from /var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/explain.rb:41:in `logging_query_plan' 
    from /var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/querying.rb:37:in `find_by_sql' 
    from /var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/relation.rb:171:in `exec_queries' 
    from /var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/relation.rb:160:in `block in to_a' 
    from /var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/explain.rb:34:in `logging_query_plan' 
    from /var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/relation.rb:159:in `to_a' 
    from /var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/relation/finder_methods.rb:159:in `all' 
    from /var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/associations/collection_association.rb:382:in `find_target' 
    from /var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/associations/collection_association.rb:335:in `load_target' 
    from /var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/associations/collection_proxy.rb:44:in `load_target' 
    from /var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/associations/collection_proxy.rb:87:in `method_missing' 
    from /var/lib/gems/1.9.2/gems/railties-3.2.13/lib/rails/commands/console.rb:47:in `start' 
    from /var/lib/gems/1.9.2/gems/railties-3.2.13/lib/rails/commands/console.rb:8:in `start' 
    from /var/lib/gems/1.9.2/gems/railties-3.2.13/lib/rails/commands.rb:41:in `<top (required)>' 
    from script/rails:6:in `require' 

我的財產。 RB文件:

class Property < ActiveRecord::Base 
    attr_accessible :owner_id, :p_city, :p_street, :postcode, :rent, :rooms, :type 
    belongs_to :owner 
    has_one :ticket 
end 

我owner.rb文件:

class Owner < ActiveRecord::Base 
    attr_accessible :address, :f_name, :l_name, :tel_no 
    has_many :properties 
end 

回答

0

,因爲它被留作繼承的東西,你不能使用 「類型」 爲屬性/列。您應該將模型的屬性和數據庫列都更改爲其他內容。

+0

你是說我應該重新命名那個叫'type'的屬性? – 2013-05-03 06:43:53

+0

是的,你必須改變它,像「property_type」。 – 2013-05-03 06:44:44

+0

是的。您不能使用「type」作爲列名稱,因爲活動 記錄使用它來存儲ruby類名稱(對於單個表 繼承)。 ref鏈接:http://www.ruby-forum.com/topic/101557 – Deepika 2013-05-03 06:45:15