【发布时间】:2011-11-07 07:35:37
【问题描述】:
我有以下型号
班级投票 包括 Mongoid::Document 包括 Mongoid::Timestamps field :value, :type => Symbol # 可以是 :aye, :nay, :abstain, :present 属于_to:用户 属于_to :polco_group 属于_to :bill和比尔
班比尔 has_many:投票和一个用户
类用户 has_many:投票我正在尝试实现以下测试
b = Bill.new @user1.vote_on(b, :aye) assert_equal :aye, b.voted_on?(@user1)这个测试失败了,因为如果我按照这些步骤,b.votes.all 是空的,但b.votes 有我们需要的数据。但是,如果我打开 rails 控制台,我会发现 b.votes 是 [],但如果我按照这些步骤操作,b.votes.all 会完全填充。我确信这里缺少一些简单的东西。什么时候需要 b.votes [] 和 .all?
我的方法:
# 在 User.rb 中 def vote_on(账单,价值) # 测试以确保用户是组的成员 my_groups = self.joined_groups 除非 my_groups.empty? 除非 bill.voted_on?(self) my_groups.each 做 |g| 除非 Vote.create(:value => value, :user => self, :polco_group => g, :bill => bill) 提出“投票无效” 结尾 结尾 结尾 #bill.保存! 别的 引发“此用户没有加入的群组” 结尾 结尾和
# 在 Bill.rb 中 def voted_on?(用户) 如果投票 = self.votes.all.select{|v| v.user == 用户} 投票.map{|v| v.value}.first 别的 零 结尾 结尾【问题讨论】:
-
尝试将
Bill.new替换为Bill.create,这应该可以解决您的大部分问题。如果可行,请告诉我,将尝试解释逻辑。 -
我什至使用了 Fabrications 加载的现有账单,但我仍然遇到这个问题。
标签: ruby-on-rails mongodb associations mongoid