0

嗨,我有三个表,如下所示:

    class Workitem < ActiveRecord::Base
      has_many :effort
      attr_protected
    end

    class Effort < ActiveRecord::Base
      attr_protected
      belongs_to :workitem
      belongs_to :person
    end

    class Person < ActiveRecord::Base
      attr_accessible :given_name, :mgrid, :surname, :id
      has_many :effort
    end

这个想法是通过努力表来跟踪一个人在特定工作项目上花费了多少天。有人可以验证我的关系是否正确吗?但这似乎不起作用。我在这里错过了什么吗?另外,我无法理解has_many :through那种关联。如果这是我应该在这种情况下使用的,有人可以给我一个想法吗?

4

1 回答 1

1

您通常会将孩子作为复数对象:

class Workitem < ActiveRecord::Base
  has_many :efforts
  attr_protected
end

class Person < ActiveRecord::Base
  attr_accessible :given_name, :mgrid, :surname, :id
  has_many :efforts
end

我建议使用 attr_accessible 而不是 attr_protected

如果一个 Foo 有许多 Bars 并且这些 Bars 属于许多 Foos,它可能看起来像这样:

class Foo < ActiveRecord::Base
  has_many :foo_bar
  has_many :bars, through => :foo_bar
end

class Bar < ActiveRecord::Base
  has_many :foo_bar
  has_many :foos, through => :foo_bar
end

class FooBar
  belongs_to :foo
  belongs_to :bar
end

反正是这样的。这里有很多关于Railcasts的帮助

此外,还有一万亿个关于 SO 的示例。

希望有帮助

于 2012-11-21T23:04:59.827 回答