2015-07-31 3 views
-1

У меня есть проект с ниже сценарииРельсы вложенного объекта Creationg

три объекта:

Client: Реальный мир клиента

Пользователь: Кто использует портал

Отдел: Клиент, для которого пользователь работает (XYZ.com, ABC.com)

страницу регистрации есть: FirstName, имя пользователя, пароль, ClientName, электронная почта

Клиент имеет только одно значение поля: Клиент Имя FirstName, имя пользователя, пароль, ClientName, электронная почта являются пользователя

что теперь Я хочу создать отдел с именем клиента как имя отдела и связать пользователя с идентификатором отдела. У пользователя есть поле department_id

+0

Даже если вы не можете писать код, пожалуйста, ясно с обозначениями. Каковы ваши модели? Вы указываете пользователя, клиента, отдел, какая разница между клиентом и пользователем? У пользователя 'has_many: client'? –

+0

Даже если вы работаете в компании, эмпирическое правило в безопасности заключается в том, что все о реализации может быть известно до тех пор, пока ключ, используемый для шифрования данных, остается в безопасности. Если вы новичок в Rails, вы с большей вероятностью представите уязвимости безопасности, которые злоумышленники могли бы легко определить сами по себе ... просто говоря. –

+0

Отредактированный вопрос с гораздо большей ясностью. О коде есть. Я не могу скопировать вставку любого количества кода вне офиса. Это политика. И мои клип-доски и действия просматриваются администратором. –

ответ

1

Даже с вашей переформулировкой это еще не ясно. Поэтому я пойду с моей собственной интерпретацией. Кроме того, вы не указали, используете ли вы Mongoid или ActiveRecord. Я поеду с несколько монгольским стилем, поскольку он производит чистую моделирование, но не стесняйтесь заменять его материалом ActiveRecord.

Модели

class User 
    has_one :department 
    has_one :client 
    accepts_nested_attributes_for :client 
    accepts_nested_attributes_for :department 

    field :first_name 
    field :password 
    field :username 
    field :email 

class Client 
    belongs_to :user 

    field :name 

class Department 
    belongs_to :user 
    field :name 

your_controller.rb

def new 
    @user = User.new 
    @user.client = Client.new 
    @user.department = Department.new 
end 

def create 
    if @user = User.create(user_params) 
    redirect_to @user 
    else 
    render 'new' 
    end 
end 

private 
    def user_params 
    # Set department.name as client.name 
    if params[:user] and params[:user][:department] and params[:user][:client] 
     params[:user][:department][:name] = params[:user][:client][:name] 
    end 
    params.require[:user].permit(
     :first_name, :password, :username, :email, 
     client_attributes: [:id, :name], 
     department_attributes: [:id, :name] 
    ) 
    end 

_form.html.erb

<%= form_for :user do |user| %> 
    <%= user.text_field(:name) %> 
    ... 

    <%= user.fields_for :client do |client| %> 
    <%= client.text_field(:name) %> 
    <% end %> 

    <%= user.fields_for :department do |department| %> 
    <p class="text-info">A department will be created with the same name as the client</p> 
    <% end %> 
<% end %> 
+0

Perfect. Спасибо чувак. Мне жаль, что я не мог лучше объяснить свой вопрос. Но это было именно то, что я смотрел. спасибо –

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