Область Rails3 с ассоциацией has_many - PullRequest
0 голосов
/ 10 декабря 2010

У меня есть две модели, которые связаны с has_many.

class User < ActiveRecord::Base
  has_many :comments
end

class Comment < ActiveRecord::Base
  belongs_to :user
end

И файл миграции для создания таблицы комментариев выглядит так:

class CreateComments < ActiveRecord::Migration
  def self.up
    create_table :comments do |t|
      t.string :body
      t.boolean :important, :default => false
      t.references :user

      t.timestamps
    end
  end
  ...

Чтобы вывести список пользователей, оставивших важные комментариикак их последний, я попытался:

scope :have_important, (joins(:comments) & Comment.order('created_at desc')).where('important = ?', true)

на user.rb.Но это относится и к пользователям, которые опубликовали важный комментарий как НЕ последний.Как я могу определить эту область?

Модульный тест здесь:

test "Scoped user's latest comment should be important" do
  User.have_important.each do |user|
    assert_equal user.comments.last.important, true
  end
end

1 Ответ

1 голос
/ 10 декабря 2010

Название "have_important" на самом деле не означает последнее. Может быть, вам нужны две разные области, одна для важных и одна для недавних. Затем соедините их.

...