我有一个用户表和一个员工表。他们有一对一的关系。 当我创建一个时间录入记录时,我想自动分配当前的员工。 我有权访问的是current_user。 employee表有一个外键(user_id)。
我在表单中尝试了这个 - 但它不起作用:
<%= f.hidden_field :employee_id, :value => current_user.employee.employee_id %>
我是否需要将外键添加到user table = employee_id?
由于
答案 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,以确保没有有趣的业务发生,这可能是要走的路。