Я создаю простое приложение уровня блога. ниже мои модели.
class User < ActiveRecord::Base
attr_accessible :name,:posts_count,:posts_attributes , :comments_attributes
has_many :posts
has_many :comments
accepts_nested_attributes_for :posts , :reject_if => proc{|post| post['name'].blank?} , :allow_destroy => true
end
class Post < ActiveRecord::Base
attr_accessible :name, :user_id ,:comments_attributes
belongs_to :user
has_many :comments
accepts_nested_attributes_for :comments
end
class Comment < ActiveRecord::Base
attr_accessible :content, :post_id, :user_id
belongs_to :user
belongs_to :post
end
Я пытаюсь создать пользователя, опубликовать и прокомментировать в одной форме, используя функцию accepts_nested_attributes_for
рельсов. Ниже мой контроллер и код просмотра.
Контроллер -----------
class UsersController < ApplicationController
def new
@user = User.new
@post = @user.posts.build
@post.comments.build
end
def create
@user = User.new(params[:user])
@user.save
end
end
Форма----------
<%= form_for @user do |f| %>
<%= f.text_field :name %>
<%= f.fields_for :posts do |users_post| %>
<br>Post
<%= users_post.text_field :name %>
<%= users_post.fields_for :comments do |comment| %>
<%= comment.text_field :content %>
<% end %>
<% end %>
<%= f.submit %>
<% end %>
С помощью приведенного выше кода я успешно могу создать нового пользователя, опубликовать и прокомментировать, но проблема в том, что я не могу назначить вновь созданного пользователя вновь созданному комментарию. Когда я проверил вновь созданный комментарий в базе данных, я получил результат ниже. Я получаю значение поля user_id «ноль».
#<Comment id: 4, user_id: nil, post_id: 14, content: "c", created_at: "2014-05-30 09:51:53", updated_at: "2014-05-30 09:51:53">
Поэтому я просто хочу знать, как мы можем назначить вновь созданный комментарий вновь созданному пользователю???
Спасибо,