首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4:未定义的方法`primary_key_name‘

Rails 4:未定义的方法`primary_key_name‘
EN

Stack Overflow用户
提问于 2013-03-12 19:51:38
回答 1查看 2K关注 0票数 4

我在使用Rails 4.0.0.beta时收到以下错误:

代码语言:javascript
复制
NoMethodError: undefined method `primary_key_name' for #<ActiveRecord::Reflection::AssociationReflection

在使用Rails 3.2.x时,我没有得到异常。

我将Ruby 1.9.3-p194用于Rails 3.2.13和Rails 4.0.0.beta。

该问题源于以下has_many语句:

代码语言:javascript
复制
class Store < ActiveRecord::Base
  has_many :relationships
  has_many :customers, :through => :relationships, :source => :user,
    :conditions => { :relationships => { :description => "Customer" } } do
      def <<(user)
        proxy_association.owner.relationships.create(:description => "Customer", :user => user)
      end
    end
end

我有以下支持类:

代码语言:javascript
复制
class User < ActiveRecord::Base
  has_one :relationship
  has_one :store, :through => :relationship
end

class Relationship < ActiveRecord::Base
  belongs_to :store
  belongs_to :user
end

我想知道如何使用Rails 4友好的代码实现相同的has_many功能?

附注:我知道我仍然在使用老式的语法,条件散列现在需要一个proc或lambda,但这些不应该导致undefined method异常。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-12 23:01:13

我找到了罪魁祸首,这是perfectline/validates_existence gem,当ActiveRecord::VERSION::MINOR >= 1 - go出现时,它默认使用不推荐使用的primary_key_name而不是foreign_key!我已经提交了一个带有修复的拉取请求(https://github.com/perfectline/validates_existence/pull/20)。感谢您为我指明正确的方向@Beerlington。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15360418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档