2010-12-18 80 views
2

我希望有人能向我解释为什么我不能保存新记录?Rails 3:has_many:通过保存问题?

class User < ActiveRecord::Base 

    has_many :viewed_posts, :dependent => :destroy 
    has_many :posts, :through => :viewed_posts 

    def update_viewed_posts(post) 
     if viewed_posts.where("id IN(?)", post.id).blank? 
      puts '----------------------- NEVER READED POST' 
      viewed_posts.build(:question_id => post.id, :user_id=> self.id) 
     end 
    end 
end 

class ViewedPosts < ActiveRecord::Base 
    belongs_to :post 
    belongs_to :user 
end 

我的问题是,当我打电话update_view_posts方法记录永远不会救?为什么?
编辑:添加了我的控制器。我在演出中打电话update_view_posts

class PostsController < ApplicationController 
    respond_to :html 

    before_filter :find_post, :only => [:show, :edit, :update, :destroy] 

    def show 
     if current_user 
      current_user.update_viewed_posts(@post) 
     end 
    respond_with(@post) 
    end 
end 

回答

1

也许你想:的

belongs_to :post 

代替

belongs_to :posts 
+0

我没有犯错。这不是帖子。这是post.Any想法? – Zeck 2010-12-18 06:31:55

+0

尝试将其更改为“viewed_posts.build(:question_id => post.id)”,因为它应该自动识别用户标识。 – 2010-12-18 06:40:44

+0

Doh,不工作。任何想法? – Zeck 2010-12-18 06:43:20