2010-09-30 3 views
0

Im работает в небольшой (новичок) проблема.комментарии не сохраняются post_id

У меня есть 2 модели: вопрос & отзывов.

Отзывы схемы: question_id, user_id, рейтинг, комментарии

На представлении 'шоу', я уже интегрировали следующий вид (formtastic): создать действие

- semantic_form_for @question.reviews.build do |f| 
    = f.error_messages 
    = f.input :rating 
    = f.input :comments 
    = f.buttons 

Мои обзоры контроллера выглядит это:

def create 
    @review = Review.new(params[:review]) 
    @review.user_id = current_user.id 

    if @review.save 
     flash[:notice] = "Successfully created review." 
     redirect_to(@review.question) 
    else 
     redirect_to(@review.question) 
    end 
    end 

Однако теперь он просто не сохраняет идентификатор вопроса в поле question_id. Он действительно сохраняет user_id.

У кого-нибудь есть ключ к тому, что я делаю неправильно? Если вам нужны журналы, дайте мне знать! Заранее спасибо

ответ

1

Вам нужно добавить скрытое поле для идентификатора вопроса в вашей форме. что-то вроде

f.hidden_field :question_id 

Чтобы быть более конкретным, user_id сохраняется, поскольку вы назначаете его в контроллере. Вам нужно передать в question_id из формы в контроллер, чтобы он также был сохранен.

+0

thx, я понял, что это может быть решение да. Но, может ли пользователь просто изменить значение поля, чтобы он менял значение другого вопроса? Я думал, что добавление его в контроллер будет безопаснее? Или это не фактор? THX снова! –

+0

Вы правы, что вам не следует доверять никому, что вы не хотите, чтобы потенциально измененный пользователем скрытые поля. Вы должны всегда делать какие-либо проверки прав, чтобы убедиться, что пользователь может делать то, что они пытаются сделать. В идеале эта ответственность инкапсулируется в модуль авторизации (то есть cancan), а не пытается принудительно выполнить ее в действии контроллера. Принимая во внимание, что вы должны либо иметь перед фильтром, который освобождается, если у них нет разрешений * или * @ review.save должны не работать, если у них нет разрешений. – semanticart

Смежные вопросы