我对Rails Active Record协会有点新意。我试图建立一种关系,但是当我尝试检索数据时,我收到ActiveRecord错误。我是否错误地关联了我的模型?
用户有许多上传,其中包含许多UserGraphs:
class User < ActiveRecord::Base
has_many :uploads, through: :user_graphs
end
class Upload < ActiveRecord::Base
has_many :users, through: :user_graphs
end
class UserGraph < ActiveRecord::Base
belongs_to :user
belongs_to :upload
end
我希望获得用户的所有上传内容以及所有用户的图表。第二行在rails控制台中不起作用并发出错误
@user = User.find(1)
@uploads = @user.uploads
错误:
ActiveRecord::HasManyThroughAssociationNotFoundError: Could not find the association :user_graphs in model User
额外信用:
如果用户拥有包含UserGraphs的上传内容......不应该是has_many :uploads
和has_many :user_graphs, through :uploads
吗?
答案 0 :(得分:4)
添加
has_many :user_graphs
到User
和Upload
类。
:through选项定义了第二个关联。
答案 1 :(得分:2)
您没有告诉Rails user_graphs
上有User
个关联,只有uploads
个关联。因此,当Rails跟随user_graphs
上的uploads
关联时,它无法找到它。
因此,您需要添加user_graphs
关联。您的模型应如下所示:
class User < ActiveRecord::Base
has_many :user_graphs # <<< Add this!
has_many :uploads, through: :user_graphs
end
class Upload < ActiveRecord::Base
has_many :user_graphs # <<< Add this!
has_many :users, through: :user_graphs
end
class UserGraph < ActiveRecord::Base
belongs_to :user
belongs_to :upload
end