Как установить атрибут при создании объекта ActiveRecord? - PullRequest
2 голосов
/ 15 апреля 2009

Я пытаюсь установить атрибут для объекта, который я создаю. Я чувствую, что это должно работать:

 def create
    @album = Album.new(params[:album])
    @album.user = current_user

    if @album.save
       flash[:notice] = 'Album was successfully created for ' + current_user.login + '.'
       redirect_to albums_url 
    else
       render :action => "new"
    end
  end

Но, похоже, игнорируется присвоение полю user. Есть идеи?

Ответы [ 2 ]

4 голосов
/ 15 апреля 2009

Предполагая, что ваши модельные отношения установлены правильно *, лучше сделать:

@album = current_user.albums.build(params[:album])

& mdash; Это правильно заполнит поле user_id для нового альбома идентификатором текущего пользователя.


* Что-то вроде:

class User < ActiveRecord::Base
  has_many :albums
  .
  .
  .
end

class Album < ActiveRecord::Base
  belongs_to :user
  .
  .
  .
end
1 голос
/ 15 апреля 2009

Миграция вашего альбома или модель вашего альбома ссылается на user_id или отношение к пользователю?

Если нет, база данных не сохранит эту информацию, даже если вы ее назначите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...