简体   繁体   中英

What is <ActiveRecord::Associations::CollectionProxy []>?

I have these models:

class Item < ActiveRecord::Base
    has_many :item_categoryships
    has_many :categories, class_name: 'ItemCategoryship', foreign_key: 'category_id', :through => :item_categoryships

    belongs_to :user

    validates :title, presence: true

end

class Category < ActiveRecord::Base
    has_many :item_categoryships
    has_many :items, :through => :item_categoryships

    belongs_to :user

    validates :name, presence: true
end


class ItemCategoryship < ActiveRecord::Base
    belongs_to :item
    belongs_to :category
    validates :item_id, presence: true
    validates :category_id, presence: true
end


class User < ActiveRecord::Base
    has_many :items
    has_many :categories, class_name: 'Category'
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable, :confirmable, :async
end

But I found when I call item.categories will get a empty array !!! I have checked database, there is a record here.

When I test in the rails console, I didn't get any record back, just saw 'ActiveRecord::Associations::CollectionProxy []'.

What is this? I am using Rails 4.0.2.

Thanks you all.

ActiveRecord::Associations::CollectionProxy is ActiveRecord class for collection associations. Now, your code should work if you change line in Item class describing categories association to:

has_many :categories, through: :item_categoryships

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM