I две модели User
и Submission
следующим образом:first_or_create по электронной почте, а затем сохранить вложенной моделируют
class User < ActiveRecord::Base
# Associations
has_many :submissions
accepts_nested_attributes_for :submissions
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :name, :role, :submission_ids, :quotation_ids, :submissions_attributes
validates :email, :presence => {:message => "Please enter a valid email address" }
validates :email, :uniqueness => { :case_sensitive => false }
end
class Submission < ActiveRecord::Base
belongs_to :user
attr_accessible :due_date, :text, :title, :word_count, :work_type, :rush, :user, :notes
validates :work_type, :title, :text,:presence => true
validates :text, :length => { :minimum => 250 }
validates :word_count, :numericality => { :only_integer => true }
end
У меня есть форма, которая собирает данные, необходимые для этих двух моделей. Пользовательский контроллер:
def index
@user = User.new
@user.submissions.build
end
def create
@user = User.where(:email => params[:user][:email]).first_or_create(params[:user])
if @user
redirect_to :root
else
render 'pages/index'
end
end
Что я хочу сделать, это сначала проверить, существует ли пользователь в системе по электронной почте. Если это так, я хочу создать представление для этого пользователя. В противном случае создайте пользователя и отправьте его одновременно.
Я смущен, как это сделать с помощью метода first_or_create
.
Любая помощь приветствуется.
Я должен «слить» вместо того, чтобы назначать ему, но это мое личное предпочтение. Очиститель немного. –
Спасибо, что это самый чистый ответ. – chell
create вызывается только в том случае, если пользователь еще не существует в базе данных. Я обнаружил, что это создало проблему, потому что она не создавала объект отправки, если пользователь уже существует. – chell