Идентификаторы автозаполнения в форме с отношением - PullRequest
2 голосов
/ 31 марта 2009

Я создал блог, в котором будут сообщения, а сообщения создаются пользователями. У меня уже есть система входа в мой блог. И я сделал связь между пользователем и его сообщениями. Теперь, когда я хочу добавить новый пост, я хочу, чтобы Rails автоматически заполнил поле user_id.

Должен ли я добавить скрытое поле и добавить user_id из сеанса, в котором я его сохранил?

Или у Ruby on Rails есть собственный способ работы с отношениями и использования идентификаторов?

@ редактировать:

модель:

class Post < ActiveRecord::Base
  validates_presence_of :subject, :body
  has_many :comments
  belongs_to :user 
end

контроллер:

....
  def new
    @post = Post.new

    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @post }
    end
  end
...

1 Ответ

0 голосов
/ 31 марта 2009

Если вы хотите убедиться, что посты блоггера связаны с правильным пользователем, тогда вообще не используйте поле формы для этого, так как конечный пользователь может изменить их значения. Лучше полагаться на систему входа в систему, которая у вас есть, и делать что-то подобное при отправке блога:

def create
  @post = current_user.posts.build(params[:post])
  if @post.save
    ...
  else
    ...
  end
end

Предполагается, что у вас есть метод current_user, возможно, в application.rb, который выбирает текущего пользователя через вашу систему входа в систему. Возможно что-то вроде:

def current_user
  @current_user ||= User.find(session[:user_id])
end

, а также при условии, что вы поместили has_many :posts в User.rb.

...