В моем новом приложении Rails (это мое первое приложение!) Пользователи могут управлять своими Клиентами , а также создавать Проектов для каждого Клиента.
Users -----< Clients -----< Projects
Чтобы создать новый Проект для Клиента , пользователь должен выбрать Клиента в поле выбора следующим образом:
<%= f.label :client_id %>
<% options = current_user.clients.all.map { |client| [client.name, client.id] } %>
<%= f.select(:client_id, options) %>
Мое действие контроллера выглядит так:
client = current_user.clients.find(params[:project][:client_id])
@project = client.projects.build(params[:project])
Это работает довольно хорошо, но мне не очень приятно вставлять client_id в мою форму напрямую. В моей Project модели даже сказано:
attr_accessible :name, :client_id
Так это недостаток безопасности? Я не хочу, чтобы кто-нибудь вмешивался в эти внешние ключи. Есть ли более безопасный способ установки внешних ключей в Rails?