我正在创建一个Rail 5应用程序,在这个应用程序中,我有几个模型。 调查,问题和SurveyQuestion(联接表)。
调查
has_many :survey_questions, dependent: :destroy
has_many :questions, :through => :survey_questions
问题
has_many :question_surveys
has_many :surveys, :through => :question_surveys
调查问题
belongs_to :survey
belongs_to :question
SurveyQuestion对象具有名为 sorting 的属性。我希望能够在获取问题对象时访问此属性,但是我只能将问题对象找回来(很好),但我也需要从联接表中获取此属性(排序):
@survey.questions
如何访问联接表属性? 另外,我想按连接表属性对@ survey.questions进行排序(排序)。
我是否必须获取问题联接表对象,然后在Survey方法中构建新的问题数组?
def ordered_question
questions = []
items = self.survey_questions.joins(:question).order("sorting desc")
items.each do |item|
questions << item.question
end
questions
end
答案 0 :(得分:1)
为什么不对集合数组进行排序?
@survey.survey_questions.sort_by{ |sq| -sq.sort }.map{ |sq| sq.question }
检查是否有错字:has_many :question_surveys