RoR需要为员工 - 用户正确编码

时间:2012-04-30 21:43:01

标签: ruby-on-rails

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

我在表单中尝试了这个 - 但它不起作用:

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

我是否需要将外键添加到user table = employee_id?

由于

2 个答案:

答案 0 :(得分:0)

所以你的员工模特

belongs_to :user

和您的用户模型

has_one :employee

是吗?

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

一样简单
current_user.employee.id

(而不是current_user.employee.employee_id)。

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

答案 1 :(得分: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,以确保没有有趣的业务发生,这可能是要走的路。