Я новичок в Ruby и Rails, так что извините, если это выглядит слишком нуб.Я создал ресурс под названием stream и другой ресурс под названием tasks и правильно сопоставил их с помощью has_many и own_to.Все работало до тех пор, пока я не решил добавить «Форму быстрого добавления задачи» в представление Stream.show:
Вот код представления формы:
<%= form_for(@task) do |f| %>
<%= render 'shared/error_messages', :object => f.object %>
<div class="field">
<%= f.text_field :title %> <%= f.submit "Add Task" %>
<%= hidden_field_tag(:stream_id, @stream.id) %>
</div>
<% end %>
Вот мой поток.show action:
def show
@stream = Stream.find(params[:id])
@user = User.find(@stream.user_id)
@tasks = @stream.tasks.paginate(:page => params[:page])
@title = @stream.title
@task = Task.new
end
А вот мой контроллер задач:
class TasksController < ApplicationController
def create
@stream = Stream.find(params[:stream_id])
@stream.tasks.create!({:title => params[:task][:title], :user_id => 1, :owner => 1})
if @stream.save
flash[:success] = "Task created succesfully!"
else
flash[:error] = "Error creating task"
end
redirect_to @stream
end
end
Выглядит довольно просто для меня.Проблема в том, что при выполнении tasks.create появляется следующее сообщение об ошибке: «Проверка не удалась: пользователь не может быть пустым, владелец не может быть пустым»
Что я делаю не так?
редактировать: добавление кода модели из комментария
class Stream < ActiveRecord::Base
attr_accessible :title
belongs_to :user
has_many :tasks, :dependent => :destroy
validates :title, :presence=> true, :length => { :maximum =>50 }
validates :user_id, :presence => true
end
class Task < ActiveRecord::Base
attr_accessible :title
belongs_to :stream
validates :title, :presence=> true, :length => { :maximum =>70 }
validates :user_id, :presence => true
validates :owner, :presence => true
validates :stream_id, :presence => true
default_scope :order => "updated_at"
end