假设我有两个模型,has_many
答案和答案belongs_to
提问。如果在我的用户模型中我添加了has_many
个问题,那么用户会自动使用has_many Answers,还是需要手动添加has_many
个答案?
答案 0 :(得分:0)
你应该阅读"有很多通过"关系。 http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association
答案 1 :(得分:0)
不自动。要让用户获得许多答案,您需要使用Trains
,例如,
Firebase ref = new Firebase(Constants.FIREBASE_URL);
ref.child("Trains").addValueEventListener(new ValueEventListener() {
...
请参阅:http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association
答案 2 :(得分:0)
如果您有以下设置:
class User << ActiveRecord::Base
has_many :questions
end
class Question << ActiveRecord::Base
has_many :answers
end
class Answer << ActiveRecord::Base
belongs_to :question
end
您无法通过一种方法获得所有用户的答案。您必须将所有问题作为集合进行处理,然后遍历您的问题集并获得所有答案。这显然会导致N+1
查询问题。
@user.questions.map(&:answers).flatten
要解决N+1
查询问题,您必须使用.includes()
,但这又会解决N+1
问题。
@user.questions.includes(:answers)
has_many :through
如果您将has_many :through
添加到User
模型中:
class User << ActiveRecord::Base
has_many :questions
has_many :answers, through: :questions
end
这样您就可以使用以下一种方法访问用户的答案:
@user.answers