Rails:将模型连接到另一个模型

时间:2012-03-03 18:50:09

标签: ruby-on-rails database ruby-on-rails-3 associations rails-activerecord

我刚刚在我的数据库中为我的微博表创建了新列,这些列是vote_count comment_count,我想将它连接到投票模型vote_up计数和评论模型评论计数。由于我只是添加了这些列,尽管有投票和评论,我如何将这些其他模型连接到微博模型以填充新列。任何建议都非常感谢!

Micropost模型

class Micropost < ActiveRecord::Base
  attr_accessible :title, :content, :view_count
  acts_as_voteable
  belongs_to :school
  belongs_to :user
  has_many :comments
  has_many :views
  accepts_nested_attributes_for :comments
end

1 个答案:

答案 0 :(得分:1)

看起来你要做的就是使用counter_cache,这是rails支持的,但是你的列名是错误的。

您希望在数据库中添加comments_countvotes_count列,而不是您拥有的列。

然后你可以按照以下方式将它连接到你的模型:

class Micropost< ActiveRecord::Base
  attr_accessible :title, :content, :view_count
  acts_as_voteable
  belongs_to :school
  belongs_to :user
  has_many :comments, :counter_cache => true
  has_many :views
  accepts_nested_attributes_for :comments
end

由于你在acts_as_votable模块中使用了一些额外的代码,所以投票的一半有点棘手,但是如果我理解正确的话,反击缓存就是你想去的方式。

以下是有关他们的更多信息:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html