Rails中的多态关联Update_Attribute失败

时间:2016-02-24 03:39:01

标签: ruby-on-rails

在我的测验游戏中,我想进行多态关联。我有一个模型,其中包含有关名为Quiz的游戏的信息。这包括game_start的列,其中存储datetime并允许我执行一些关键操作,例如在游戏启动后删除游戏。

用户可以注册游戏,他们的注册记录在一个名为Reservation的单独模型中。我现在需要Quiz模型使用Reservation信息更新game_start模型,因此多态似乎是要走的路。

但是,当我尝试测试时,我在控制台中出现错误。我正在跑步:

 q = Quiz.last.game_start
   // I want to add a record in Reservation for a game_start, so I use .create here
 r = Reservation.create(game_start: 'Fri, 26 Feb 2016 13:26:00 UTC +00:00')
   // Now I want q to use the polymorphic association to update r as a test 
 q.update_attribute(:quiz_content, r)

这在控制台中返回错误:

 undefined method `update_attribute' for Thu, 25 Feb 2016 15:26:00 UTC +00:00:Time

我还尝试使用update_columnupdate_attributes进行确认,我发现两者都存在相同的方法错误。

因此,假设问题在于我如何设置关联,这里有两个模型。

测验

 class Quiz < ActiveRecord::Base
    belongs_to :quiz_content, polymorphic: true
 end

预订

 class Reservation < ActiveRecord::Base
    belongs_to :user
    has_many :quizzes, as: :quiz_content
 end

其他明显的东西。我已经运行了rake db:migrate并重新启动了控制台,以及服务器。仍然是相同的方法错误。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

def countTokens(vendorRDD): return vendorRDD.map(lambda l: (l[0],len(l[1]))).reduce(lambda a,b: a[1] + b[1]) 是为Active Record模型定义的方法。

在示例中,q设置为update_attribute,即时间戳,并在timestamp变量上调用update_attribute。

实际上,Quiz模型假设包含Reservation及其类型的id。请参阅http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

当需要多个模型具有相同类型的关联时,也应使用多态关联。例如,在StackOverflow中,问题和答案都有注释,注释将与问题和答案形成多态关联。

如果你只想用同一时间更新两个模型,那么在控制器中做它比做多态关联更好