0

我使用has_many :through由具有三种模式的关系:HAS_MANY:通过关联

class Curriculum class < ActiveRecord::Base 

    has_many :interests 
    has_many :vacancies,: through => :interests 
end 

class Vacancy class < ActiveRecord::Base 

    has_many :interests 
    has_many :resumes,: through => :interests 
end 

class Interest < ActiveRecord:: Base 

    belongs_to :vacancy 
    belongs_to :curriculum 
end 

并创建课程和空缺,我通过行政创建它们,我需要知道我怎样才能创建感兴趣空缺的ID,以及如何登录系统,我必须得到它的ID,并建立新的银行利益关系。我想知道如何编程来做到这一点,我想知道控制器将如何获得创建操作,以及有什么更好的方法来做到这一点。

+0

我忘了上面的评论,但我是新的红宝石轨道上,请不要考虑一些错误。 – 2011-12-14 17:20:32

回答

0

首先,尝试阅读整个"Guide to Rails on Associations",特别是关于has_many :through的部分。然后检查您的模式,如果您的数据库已迁移并且包含interests表所需的外键为curriculumsvacancies,请调用curriculum_idvacancy_id

如果全部到位,下面的代码将创建关系的两个物体之间:

@curr = Curriculum.find(1) 
@vac = Vacancy.find(1) 
@curr.interests << @vac 
@curr.save 

最后两行创建@curr@vac并存储在数据库之间的利益。所以你不应该使用ID并直接处理它们,而是使用对象来代替。

第二部分现在提供一个界面,允许在课程和空缺之间定义(和删除)兴趣。这里的基本流程如下:

  • 你有一个课程重点。
  • 你有一个链接添加/删除课程。
  • 打开的视图显示可能的空缺列表,每个空缺都有一个复选框。
  • 通过选择(或取消选中)复选框,空位的ID将保存在发送给控制器的请求参数中。

查看(旧的)播客Railscast #52如何在类似的情况下做到这一点。或者请参阅has_many :through with checkboxes的示例。

另一种方法是使用JQuery自动完成,并逐个添加兴趣点。查看使用JQuery Tokeninput的漂亮播客Railscast #258

+0

我该如何制作一个按钮来点击它以产生新的兴趣? – 2011-12-16 19:24:01

0

我觉得这是你找什么:

HABTM Checkboxes

这是使用一个的最佳方式有属于许多关联。