Как связанная база данных получает свой внешний ключ? - PullRequest
0 голосов
/ 30 октября 2010

Я сделал кучу потрошения с моими контроллерами по умолчанию, и теперь я не могу получить свой 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

Я перехожу на этот URL ..

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 ]

1 голос
/ 30 октября 2010

В вашем form_for вы передаете @user?

form_for([@user, @post]) do

Может быть, это поможет:

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

0 голосов
/ 30 октября 2010

Хм, я не люблю отвечать на свои вопросы, но я нашел это решение, и мне было интересно, если это приемлемый способ сделать это.

В моем контроллере для def create я делаю это:

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

вместо этого:

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