-1

我有一个带有投票方法的Post类,它创建了一个Vote实例

这不起作用

def vote(options)
   vote = self.votes.create(options)
   return vote if vote.valid?
   nil
end 

这确实有效

def vote(options)
   options[:post] = self
   vote = self.votes.create(options)
   return vote if vote.valid?
   nil
end 

.create调用不应该自动添加 :post 关联吗?

澄清

类 Post < ActiveRecord::Base has_many :votes end

类投票 < ActiveRecord::Base belongs_to :user, :counter_cache => true belongs_to :post end

4

2 回答 2

1

你有

has_many :votes

在您的 Post 模型中声明?

在对象的生命周期中什么时候调用 vote 方法?它是回调方法的一部分吗?

于 2009-10-26T21:59:52.930 回答
0

如果你把它写成这样,调试起来会更容易,self.votes.create!(options)因为它会抛出一个带有错误消息的异常。一旦你解决了问题,你就可以把它拿出来,但你应该考虑如果它不起作用,你的方法应该返回什么。

Post#vote回归有意义nil吗?为什么投票会失败?您的代码如何处理返回的 nil 值Post#vote

也许您应该将其重写为:

def vote(options)
  self.votes.create!(options)
end
于 2009-10-26T22:57:40.010 回答