【发布时间】:2016-06-22 15:03:56
【问题描述】:
我正在尝试在一个模型中使用 has_one 和 has_many 方法。一个任务流可以有很多任务,但它也有一个默认任务。
我正在尝试在任务流表中创建一个包含任务 ID 的列。但是,当我尝试设置该默认任务时,它不起作用。
class Taskflow < ActiveRecord::Base
has_many :tasks
has_one :default_task, :class_name => 'Task'
class Task < ActiveRecord::Base
belongs_to :taskflow
我为数据库播种,然后在 Rails 控制台中尝试将任务分配为任务流 default_task:
taskflow1 = Taskflow.first
task1 = Task.first
taskflow1.default_task = task1
这不适用于任务流 default_task 值保持为“nil”。实现所需行为的正确方法是什么?
任何帮助将不胜感激。
编辑
迁移文件是:
class CreateTaskflows < ActiveRecord::Migration
def change
create_table :taskflows do |t|
t.string :title
t.string :description
t.references :default_task
t.timestamps null: false
end
end
end
class CreateTasks < ActiveRecord::Migration
def change
create_table :tasks do |t|
t.string :task_type
t.text :help
t.text :data
t.belongs_to :taskflow
t.timestamps null: false
end
end
end
【问题讨论】:
-
首先,您似乎从未设置任务,因此“taskflow1.default_task = task”会将 default_task 设置为 nil,因为从未设置任务。是否所有 TaskFlow 都具有相同的默认任务,还是在 TaskFlow 实例之间发生变化?
-
抱歉打错了。任务流实例之间的默认任务可能不同。非常感谢。
标签: ruby-on-rails ruby-on-rails-4 associations