我想a.items
從全部Projects
全部返回Items
。 但它沒有返回...... 我可以得到項目與a.projects.first.items
,a.projects.second.items
查詢等等,但我不喜歡這種方法,列出具體項目......這種類型的關聯可以通過has_many:through?來構建嗎?
是否有可能創建的has_many這種關聯:雖然(或其他關鍵字)返回所有項目的所有項目?
a = Account.first
a.items <---- return nothing via has_many :through
這裏的生成的SQL爲a.items
SELECT 「項目」。* FROM 「項目」 INNER JOIN 「項目」 ON 「項目」, 「ID」= 「項目」。 「ITEM_ID」 WHERE「projects」。「account_id」=? [ 「ACCOUNT_ID」,1]
從SQL語句來看,我認爲出現問題,因爲Project
模型item_id
場。但這是因爲Project
是Item
的特殊類型。
account.rb
# == Schema Information
#
# Table name: accounts
#
# id :integer not null, primary key
#
class Account < ActiveRecord::Base
has_many :projects
has_many :items, :through => :projects
end
project.rb
# == Schema Information
#
# Table name: projects
#
# id :integer not null, primary key
# account_id :integer
# item_id :integer
#
class Project < ActiveRecord::Base
belongs_to :account
belongs_to :item
has_many :items
end
item.rb的
# == Schema Information
#
# Table name: items
#
# id :integer not null, primary key
# name :string
# project_id :integer
#
class Item < ActiveRecord::Base
belongs_to :project
end
它是正確的說一個項目'belongs_to'一個項目?我會嘗試刪除它,這是令人困惑的Rails。 – Kris
刪除幫助。謝謝! – yaru