У меня есть модель "Пользователь и галерея" и следующие ассоциации:
gallery.rb
attr_accessible :name, :description
belongs_to :user
user.rb
has_one :gallery
Галерея созданачерез форму, и это не основано на создании пользователя (я делаю это, потому что некоторый пользователь не может создать галерею)
Вот контроллер галереи с действием create:
galleries_controller.rb
def create
@gallery = Gallery.new(params[:gallery])
@gallery.user_id = current_user.id # save user_id to gallery
if @gallery.save
redirect_to @gallery, :notice => "Your gallery has been successfully created."
else
render :action => 'new'
end
end
1.) Мой первый вопрос:
, когда я настраиваю связь 1-к-1, такую как эта, пользовательможет создать столько галерей, сколько захочет.Так разве это не имеет «только» одну ассоциацию?(Я не думаю, что я понимаю концепцию этого. Почему не возникает ошибка?)
2.) Мой второй вопрос:
Для того, чтобы иметьтолько одна галерея на пользователя У меня была проверка user_id в модели галереи
validates :user_id, :uniqueness => true
Это правильный способ избежать многих записей галереи, связанных с одним пользователем?
EDIT
Благодаря Рувиму, я делаю это так:
контроллер
def new
if current_user.gallery == nil
@gallery = current_user.build_gallery
else
flash[:error] = "You already have a gallery"
end
end
def create
@gallery = current_user.build_gallery(params[:gallery])
if @gallery.save
redirect_to @gallery, :notice => "Your gallery has been successfully created."
else
render :action => 'new'
end
end
В представлении (new.html.erb)
<% if current_user.gallery == nil %>
<%= form ... %>
<% end %>
Нет user_idнеобходимо подтверждение