访问联接表属性

时间:2018-08-19 12:06:52

标签: ruby-on-rails

我正在创建一个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

1 个答案:

答案 0 :(得分:1)

为什么不对集合数组进行排序?

@survey.survey_questions.sort_by{ |sq| -sq.sort }.map{ |sq| sq.question }

检查是否有错字:has_many :question_surveys