引用belongs_to关联的belongs_to关联

时间:2010-12-03 21:08:13

标签: ruby-on-rails activerecord associations belongs-to

我有以下关系在rails控制台中工作但不是在我运行网站时我做错了什么?

class C < ActiveRecord::Base
  belongs_to :b
end

class B < ActiveRecord::Base
  belongs_to :a
  has_many :c

  def title
    a.title
  end
end

表C具有B的外键,B具有A的外键。

这适用于rails控制台。

c = C.find(12)
c.b.title

但是当我运行网站时它不起作用。

这是我得到的错误

NoMethodError (undefined method `title' for #<ActiveRecord::Associations::BelongsToAssociation:0x104feb5a0>):

3 个答案:

答案 0 :(得分:3)

而不是定义执行此操作的方法,delegate!在app/models/c.rb

delegate :title, :to => :b

然后在app/models/b.rb

delegate :title, :to => :a

答案 1 :(得分:0)

  

has_one(association_id,options = {})   指定一对一关联   和另一堂课。这个方法应该   只有在其他班级时才使用   包含外键。如果   当前类包含外来的   键,然后你应该使用belongs_to   代替。也可以看看   ActiveRecord的::协会:: ClassMethods的   关于何时使用has_one和的概述   何时使用belongs_to。

答案 2 :(得分:-1)

我必须将B类标题方法转换为类方法才能使它工作。