使用fields_for时如何将范围应用于关联?

时间:2010-06-16 20:45:42

标签: ruby-on-rails

我有一个项目有很多任务,每个任务都属于一个人。

在我的项目编辑表单中,我允许编辑现有任务并使用嵌套对象表单工具(http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes)添加新任务:

<% project_form.fields_for :tasks do |task_form| %>

当fields_for从数据库请求任务时,我想急切加载关联的Task Person对象,但我找不到解决方案。可能吗?在Project模型中,我可以使用:include选项定义我的has_many:tasks,但我宁愿避免这种情况,因为在处理项目任务时我不需要急切地加载Person对象。

现在我已经创建了第二个has_many关联:tasks_including_person和相应的accepts_nested_attributes_for,并在我的fields_for中使用它。它有效,但我不想创建这样的特定关联。

1 个答案:

答案 0 :(得分:27)

您可以将第二个参数传递给fields_for,这是要渲染的对象或集合。例如:

project_form.fields_for :tasks, project_form.object.tasks.all(:include => :person) do |task_form|