2015-07-01 70 views
0

我想a.items從全部Projects全部返回Items。 但它沒有返回...... 我可以得到項目與a.projects.first.itemsa.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場。但這是因爲ProjectItem的特殊類型。

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 
+0

它是正確的說一個項目'belongs_to'一個項目?我會嘗試刪除它,這是令人困惑的Rails。 – Kris

+0

刪除幫助。謝謝! – yaru

回答

0

感謝Brian Tompset噸。他的建議是正確的。 我刪除循環belongs_to依賴項目< - >項目代碼開始工作,因爲我想。

這裏的工作代碼:

class Project < ActiveRecord::Base 
    belongs_to :account 
    # belongs_to :item <---- Comment this line 
    has_many :items  
end 
相關問題