在我的测验游戏中,我想进行多态关联。我有一个模型,其中包含有关名为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_column
和update_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
并重新启动了控制台,以及服务器。仍然是相同的方法错误。有任何想法吗?
答案 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中,问题和答案都有注释,注释将与问题和答案形成多态关联。
如果你只想用同一时间更新两个模型,那么在控制器中做它比做多态关联更好