关联数据库如何获取其外键?

时间:2010-10-29 21:50:30

标签: ruby-on-rails foreign-keys associations models

我对我的默认控制器进行了大量修改,现在我无法在创建时填充user_id。

我很好奇这是如何填充的。如果您有兴趣,请查看我的路线和模型关联,然后在最后我将向您展示结果参数。最终结果是没有添加user_id

路由

resources :users do
  resources :posts do
    collection do
      get :view
    end
  end
end

模型

#Post.rb
belongs_to                    :user, :touch => true                    
#User.rb
has_many :posts

我导航到这个网址..

http://localhost:3001/users/1/posts/new

并发布我的帖子,params返回此信息:

{"commit"=>"save", "post"=>{"name"=>"hell hath no furry", "category"=>"vegan", "url"=>"www.reddit.com", "text"=>"", "is_link"=>"1"}, "authenticity_token"=>"aYnSLgJ9E6MaM6iSkRrCyyiMZj06oLdybTMkNqss8FA=", "utf8"=>"✓", "action"=>"create", "controller"=>"posts"}

这之前有用,不知道为什么它不再关联它们了。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

在你的form_for中,你是否传递了@user?

form_for([@user, @post]) do

也许这会有所帮助:

http://www.gatezero.org/blog/2008/4/30/rails-nested-resources-and-form_for.html

答案 1 :(得分:0)

嗯我不喜欢回答我自己的问题,但我找到了这个解决方案,并且想知道这是否是一种可以接受的方式来实现这个目标。

def create的控制器中,我这样做:

@post = current_user.posts.create(params[:post])

而不是:

@post = Post.new(params[:post])