Cuando publico un formulario para crear una nueva consulta con un comentario secundario (en la aplicación, las consultas pueden tener varios comentarios), el comentario no se está creando. Funciona cuando se eliminan las validaciones de presencia. Entonces tiene que ver con el orden en que las cosas se construyen y se guardan. ¿Cómo preservar las validaciones y mantener el código limpio?Identificación de asociación no establecida con accept_nested_attributes_for y decent_exposure
(El siguiente es un ejemplo de modo que no puede ser exactamente runable)
modelos/inquiry.rb
class Inquiry < ActiveRecord::Base
has_many :comments
accepts_nested_attributes_for :comments
modelos/comment.rb
class Comment < ActiveRecord::Base
belongs_to :inquiry
belongs_to :user
validates_presence_of :user_id, :inquiry_id
controladores/inquiry_controller. rb
expose(:inquiries)
expose(:inquiry)
def new
inquiry.comments.build :user => current_user
end
def create
# inquiry.save => false
# inquiry.valid? => false
# inquiry.errors => {:"comments.inquiry_id"=>["can't be blank"]}
end
vistas/investigaciones/new.html.haml
= simple_form_for inquiry do |f|
= f.simple_fields_for :comments do |c|
= c.hidden_field :user_id
= c.input :body, :label => 'Comment'
= f.button :submit
esquema de base de
create_table "inquiries", :force => true do |t|
t.string "state"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "comments", :force => true do |t|
t.integer "inquiry_id"
t.integer "user_id"
t.text "body"
t.datetime "created_at"
t.datetime "updated_at"
end
Por favor, muestre las migraciones que crean estas tablas, o si no se construye mediante migraciones, por favor, muestre la base de datos descrita. –
bien, agregué un extracto de schema.rb – linojon