0

在我的 Rails 3.2 应用程序中,我has_and_belongs_to_many :notesProfile. Note上面有一个类型 - “紧急”或“标准”。( Note has_and_belongs_to_many :profiles.)

我希望能够在不profile.urgent_notes使用以下方法构建它的情况下做类似的事情:

def urgent_notes
  urgent_notes = Array.new
  goals.each do |g|
    if g.type == "urgent"
      urgent_notes << g
    end
  end

  urgent_notes
end

那么有没有一种干净的方法可以通过添加另一个关联来做到这一点?或者像范围这样的东西是最好的?

4

2 回答 2

1

如果您不想使用范围,请重写您的 Profile 方法:

def urgent_notes
  self.goals.map {|g| g.type == 'urgent'}
end

您不需要创建新数组或任何东西。Rails 和 Ruby 为您完成所有这些工作。

于 2013-05-26T22:50:30.840 回答
1

Note 上的范围最好。范围:紧急,其中(类型:'紧急')

然后你可以做 profile.notes.urgent 来获取紧急笔记。

于 2013-05-26T22:44:18.733 回答