我希望a.items
从所有Items
返回所有Projects
。
但它什么也没有回报......
我可以通过a.projects.first.items
,a.projects.second.items
查询等方式获取相关内容,但我不喜欢这种列出单个项目的方法...
是否可以使用has_many :(或其他关键字)创建此类关联以返回所有项目中的所有项目?
a = Account.first
a.items <---- return nothing via has_many :through
这里为a.items
SELECT&#34; items&#34;。* FROM&#34; items&#34; INNER JOIN&#34;项目&#34; ON&#34; items&#34;。&#34; id&#34; = #&34;项目&#34;&#34; ITEM_ID&#34;在哪里&#34;项目&#34;。&#34; account_id&#34; =? [[&#34; account_id&#34;,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
答案 0 :(得分:0)
感谢Brian Tompsett。他的建议是正确的。 我删除了循环belongs_to依赖项&lt; - &gt;项目代码开始按我的意愿工作。
这是工作代码:
class Project < ActiveRecord::Base
belongs_to :account
# belongs_to :item <---- Comment this line
has_many :items
end