我有两个 ActiveRecord 模型,Assignment
和Instruction
. Assignment
属于Instruction
.
保存新分配时,我想触发一个回调,该回调将外键插入分配中,基于Assignment
. 换句话说,如果assignment.assignment_type
= instruction.name
,则将该指令的 id 作为主键插入到赋值中。
看起来你会使用 Rails 回调。但我不确定如何在不让模型相互交谈的情况下做到这一点,我认为这是一个坏主意。
编辑 1
按照下面 mjnissim 的建议,我实现了这个,它有效:
class Assignment < ActiveRecord::Base
attr_accessible :game_type, :title, :instruction_id
belongs_to :instruction
before_save :set_instruction
private
def set_instruction
instruction = Instruction.where(:name => self.game_type).first
self.instruction = instruction
end
end
但是,我对编写该set_instruction
方法犹豫不决,因为我认为如果不破坏 MVC 结构,模型就无法相互交流。但实际上没问题吗?