J'ai deux modèles, qui sont associés à has_many.Portée Rails3 avec l'association has_many
class User < ActiveRecord::Base
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :user
end
et le fichier de migration pour créer table commentaires est comme ceci:
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
...
Pour afficher la liste des utilisateurs qui ont posté un commentaire important que leur dernier un, j'ai essayé:
scope :have_important, (joins(:comments) & Comment.order('created_at desc')).where('important = ?', true)
sur l'utilisateur. rb. Mais cela inclut les utilisateurs qui ont posté des commentaires importants comme pas plus tard. Comment puis-je définir cette portée?
test unitaire est ici:
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
Je ne suis pas entièrement sûr de ce que vous essayez d'atteindre. Pourriez-vous écrire un test/spec pour cela? – iain
Test unitaire supplémentaire. – JayKay
sur un sujet sans rapport, vous êtes-vous nommé après le meneur de Jamiroquai? J'adore ce groupe :) – Samo