0

我有一个用户表和一个员工表。他们是一对一的关系。当我创建时间输入记录时,我想自动分配当前员工。我可以访问的是 current_user。雇员表有一个外键(user_id)。

我在表格中尝试了这个 - 但它没有用:

<%= f.hidden_field :employee_id, :value => current_user.employee.employee_id %>

我需要向 user table = employee_id 添加外键吗?

谢谢

4

2 回答 2

0

所以你的员工模型

belongs_to :user

和你的用户模型

has_one :employee

是对的吗?

如果是这样,它可能就像将隐藏字段值更改为一样简单

current_user.employee.id

(而不是 current_user.employee.employee_id)。

如果这不起作用,您能否准确发布您是如何构建一对一关系的?

于 2012-04-30T22:15:28.593 回答
0

您最好的选择可能是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 以确保没有发生有趣的事情,这可能是要走的路。

于 2012-04-30T22:43:16.443 回答