Rails has_one形式

时间:2013-09-11 11:52:39

标签: ruby-on-rails

我有两种模式:

  • 学生 - has_one locker
  • locker - belongs_to student

我在储物柜桌上有一个student_id。

创建表单以将学生分配给储物柜非常简单,特别是使用simple_form。找到学生的储物柜也很简单。

但我如何为学生分配储物柜? 意思是,不是去更衣室形式和选择学生,而是去学生并分配一个更衣柜 - 这更直观。

我试图扭转局面,但它看起来并不好: 学生belongs_to储物柜 - 这对我来说不太好。

我的问题是如何解决这个问题?

THX!

2 个答案:

答案 0 :(得分:0)

这应该有效:

class Student < ActiveRecord::Base
  has_one :locker

  def locker_id=(value)
    self.locker = Locker.find(value)
  end

  def locker_id
    locker ? locker.id : nil
  end

end

然后你可以使用locker_id,因为学生有一个外键字段。

答案 1 :(得分:0)

当您创建新的储物柜时,它将自动分配给学生。

例如在Lockers_controller

def new
  @student = Student.find(params[:id])
  @locker = @student.build_locker
end

所以locker已经与student绑定了 - 这意味着您可以通过致电@student.locker来找到学生的储物柜