我有一个用户表和一个员工表。他们是一对一的关系。当我创建时间输入记录时,我想自动分配当前员工。我可以访问的是 current_user。雇员表有一个外键(user_id)。
我在表格中尝试了这个 - 但它没有用:
<%= f.hidden_field :employee_id, :value => current_user.employee.employee_id %>
我需要向 user table = employee_id 添加外键吗?
谢谢
我有一个用户表和一个员工表。他们是一对一的关系。当我创建时间输入记录时,我想自动分配当前员工。我可以访问的是 current_user。雇员表有一个外键(user_id)。
我在表格中尝试了这个 - 但它没有用:
<%= f.hidden_field :employee_id, :value => current_user.employee.employee_id %>
我需要向 user table = employee_id 添加外键吗?
谢谢
所以你的员工模型
belongs_to :user
和你的用户模型
has_one :employee
是对的吗?
如果是这样,它可能就像将隐藏字段值更改为一样简单
current_user.employee.id
(而不是 current_user.employee.employee_id)。
如果这不起作用,您能否准确发布您是如何构建一对一关系的?
您最好的选择可能是employee_id
在控制器中设置。如果是您正在为其构建表单@entry
的模型实例(调用它),请考虑执行以下操作:Entry
# in controller +new+ method:
@entry.employee_id = current_user.employee.id
然后应该自动填充隐藏字段的值:
<%= f.hidden_field :employee_id %>
当然,您甚至可能根本不需要在表单中进行设置。假设表单被发布到create
某处的方法,为什么不在那里设置变量呢?
# in controller +create+ method:
@entry = Entry.new(params[:entry])
@entry.employee_id = current_user.employee.id
if @entry.save
# do stuff
end
因为您可能至少需要检查 id 以确保没有发生有趣的事情,这可能是要走的路。