我有以下关系在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>):
答案 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类标题方法转换为类方法才能使它工作。