我有一个属于用户的客户模型。但是,在创建新客户时,用户将不会登录。相反,我将根据用户名称属性分配用户。
以下是客户迁移:
create_table :customers do |t|
t.belongs_to :user
t.string :name, null: false
t.date :install_date, null: false
t.decimal :mmr, null: false
t.boolean :sixty_month, default: false
t.boolean :eft, default: false
t.boolean :activation, default: false
t.timestamps
end
然后我有了一个新的客户表格:
<h1>Create Customer</h1>
<%= form_for @customer do |f| %>
<div>
<%= f.label :name %>
<%= f.text_field :name %>
</div>
<div>
<%= f.label :install_date %>
<%= f.date_field :install_date %>
</div>
<div>
<%= f.label :mmr %>
<%= f.number_field :mmr %>
</div>
<div>
<%= f.label :sixty_month %>
<%= f.check_box :sixty_month %>
</div>
<div>
<%= f.label :eft %>
<%= f.check_box :eft %>
</div>
<div>
<%= f.label :activation %>
<%= f.check_box :activation %>
</div>
<div>
<%= f.label :users_name %>
<%= f.text_field :users_name %>
</div>
<%= f.submit 'Create Customer' %>
<% end %>
我需要获取users_name字段并将其与关联用户匹配,并获取该用户ID并将其分配给customers:user_id属性。在客户控制器创建行动到目前为止我有:
@customer.user_id = User.where("name = #{}").id
我需要从新客户表单中的users_name字段提取输入,并以某种方式将其放入上面的代码中。我只是不知道哈哈。感谢所有帮助!
答案 0 :(得分:1)
您可能希望将其移出控制器并进入辅助方法,但您可以这样做:
def create
@customer = Customer.new(customer_params)
if params[:users_name]
user = User.find_by(name: params[:users_name])
@customer.user_id = user.id unless user.nil?
end
if @customer.save
flash[:success] = "Customer created!"
redirect_to @customer
else
render 'new'
end
end
假设您使用的是Rails 4。