小编KPh*_*sey的帖子

Rails 4.1.x HABTM未定义方法'foreign_key'

以下定义适用于Rails 4.0.x及更低版本:

module Gemgento
   class Product < ActiveRecord::Base
      has_and_belongs_to_many :stores, -> { distinct }, join_table: 'gemgento_stores_products', class_name: Gemgento::Store
   end
end
Run Code Online (Sandbox Code Playgroud)

但是,升级到Rails 4.1.x后,每当Gemgento::Product初始化类时,我都会收到以下错误.

NoMethodError: undefined method `foreign_key' for #<Class:0x007f870f18e668>
from /Users/Kevin/.rvm/gems/ruby-1.9.3-p429@sellect/gems/activerecord-4.1.4/lib/active_record/dynamic_matchers.rb:26:in `method_missing'
from /Users/Kevin/.rvm/gems/ruby-1.9.3-p429@sellect/gems/activerecord-4.1.4/lib/active_record/associations/builder/has_and_belongs_to_many.rb:113:in `belongs_to_options'
from /Users/Kevin/.rvm/gems/ruby-1.9.3-p429@sellect/gems/activerecord-4.1.4/lib/active_record/associations/builder/has_and_belongs_to_many.rb:82:in `through_model'
from /Users/Kevin/.rvm/gems/ruby-1.9.3-p429@sellect/gems/activerecord-4.1.4/lib/active_record/associations.rb:1580:in `has_and_belongs_to_many'
from /Users/Kevin/Sites/gemgento/app/models/gemgento/product.rb:21:in `<class:Product>'
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-4.1

8
推荐指数
1
解决办法
1085
查看次数

Rails模块/文件夹命名约定

我遇到了模块名称和文件夹结构的问题.

我的模型定义为

module API
  module RESTv2
    class User
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

文件夹结构如下

models/api/restv2/user.rb
Run Code Online (Sandbox Code Playgroud)

当试图访问该类时,我得到一个未初始化的常量错误.但是,如果我将模块名称更改为REST并将文件夹更改为/ rest,则不会收到错误.

我假设问题与文件夹的命名有关,我尝试了/ rest_v_2,/ rest_v2,/ restv_2等所有不同的组合.

有什么建议?

ruby-on-rails

6
推荐指数
2
解决办法
4809
查看次数

标签 统计

ruby-on-rails ×2

ruby-on-rails-4.1 ×1