Context:
我有一个company
模型有很多projects
,有很多tasks
. The company
也有很多employees
,这又具有许多tasks
.
Schema:
Problem:
我正在构建一个表单来创建一个项目,用户可以在其中添加多个tasks
。提交后,表格应创建一个project
记录,一个或多个task
记录与hours
and employee_id
属性并(!)检查是否employee
名称已存在于数据库中或创建一个新名称。
我通过添加 jquery 来解决这个问题autocomplete
到表单并定义一个虚拟属性getter
and setter
我的任务模型中的方法。如同轨道广播 #102 http://railscasts.com/episodes/102-auto-complete-association.
这样就成功设置了employee_id
in tasks
并创建一个新的employee
与员工一起记录name
and task_id
.
目前的问题是模型没有保存company_id
.
My code:
class Task < ActiveRecord::Base
belongs_to :project
belongs_to :employee
def employee_name
employee.try(:name)
end
def employee_name=(name)
self.employee = Employee.find_or_create_by(name: name) if name.present?
end
end
问题:
我怎样才能使company_id
父模型的属性可用我的 setter 方法Task
模型?就像这样:
def shareholder_name=(name)
self.shareholder = Shareholder.find_or_create_by(name: name, company_id: company_id) if name.present?
end
目前这会产生错误:
undefined local variable or method "company_id" for #<Task:0x98438b8>
EDIT:
或者,如果我尝试project.company_id
这告诉我project
是一个 NilClass:
undefined method company_id for nil:NilClass
UPDATE:
仍然没有解决。任何想法为什么project
is nil
here?