2014-01-09 81 views
0

我有3個型號,它們的關係是many-to-manyRails的添加記錄基於許多-to-many關聯

MMEM:

class MMem < ActiveRecord::Base 
    has_many :t_mem_task_records 
    has_many :m_tasks,through: :t_mem_task_records 
end 

TMemTaskRecord:

class TMemTaskRecord < ActiveRecord::Base 
    belongs_to :m_mem 
    belongs_to :m_task 
end 

TMemTask:

class TMemTask < ActiveRecord::Base 
    has_many :t_mem_task_records 
    has_many :m_mems,through: :t_mem_task_records 
end 

如果我想要得到的指定MMem所有TMemTasks,我可以這樣寫:

MMem.find(1).m_tasks 

現在,我想一個TMemTask添加到指定MMem

MMem.find(1).m_tasks.create(MTask.find(1)) 

但我得到了一個錯誤:

NoMethodError: undefined method `stringify_keys' for #<MTask:0xb822624> 

爲什麼我得到這個錯誤?或任何其他解決方案?

回答

1

.create用於創建一個新的MTask,如果你想添加一個已經存在的MTask該協會,然後使用:

MMem.find(1).m_tasks << MTask.find(1) 
+0

感謝,這項工作很好! – HXH

+0

如果'TMemTaskRecord'有另一個名爲'tip'的字段,並且當我執行'MMem.find(1).m_tasks << MTask.find(1)'時我想把它設置爲'0',我該怎麼辦?謝謝! – HXH

+0

@HXH'MMem.find(1).t_mem_task_records.create(m_task:MTask.find(1),tip:0)' – xdazz

相關問題