多态多对多关系,正确定义以及如何检索相关模型?

时间:2014-04-16 08:05:12

标签: ruby-on-rails activerecord polymorphic-associations

我正在尝试建立一个小型数据库来处理责任。

不同的用户可以负责不同的事情(“managables”)

  • 项目
  • 功能
  • 文档

用户可以负责管理n个管理员,管理员可以负责管理。

我有以下型号:

class User < ActiveRecord::Base
has_many :responsibilities
end

class Responsibility < ActiveRecord::Base
belongs_to :managable, :polymorphic => true
belongs_to :user
end

class Project < ActiveRecord::Base
has_many :responsibles, :as => :managable, :class_name => 'Responsibility' , :source_type => "Project"
end

我刚刚使用rails g scaffold User生成模型,然后在model.rb文件中添加了关系。

我希望能够使用类似的东西:

u = User.new
p = Project.new
r = Responsibility.new

r.user = u
r.managable = p

并使用类似p.responsibles的内容检索每个可管理对象的负责人

NoMethodError: undefined method `responsibles' for #<Responsibility:0x532f1a0>

它也让我觉得managable_type列没有填满。它总是0。

我错过了什么?

0 个答案:

没有答案