在EchoProducerApi上找不到名为'echo_producer_apis'的关联;也许你拼错了吗?

时间:2016-02-04 10:51:59

标签: ruby-on-rails ruby-on-rails-4

我想我正在做一些命名错误,所以请帮帮我...... !!

class EchoProducerApi < ActiveRecord::Base
  has_one :echo_practice_api    
end

class EchoPracticeApi < ActiveRecord::Base
  belongs_to :echo_producer_apis
end

@producer_data = EchoProducerApi.joins(:echo_producer_apis).select("echo_practice_apis.*,echo_producer_apis.*").paginate(:page => params[:page] , :per_page => 10)

2 个答案:

答案 0 :(得分:0)

更改

belongs_to :echo_producer_apis

belongs_to :echo_producer_api

使用belongs_to :echo_producer_apis,Rails会查找名为EchoPracticeApis的类名,但您有EchoPracticeApi。这就是它无法正常工作的原因。更改为关联名称将修复它。

注意:belongs_tohas_one的关联名称通常应为单数

答案 1 :(得分:0)

记住Rails关系和关联是不言自明的。 belongs_to本质上意味着对象的实例belongs_to只有一个其他类的对象,因此您应该将其指定为单数值。因此,你应该改变:

class EchoPracticeApi < ActiveRecord::Base
  belongs_to :echo_producer_apis
end

致:

class EchoPracticeApi < ActiveRecord::Base
  belongs_to :echo_producer_api
end