我更新应用程序的Rails 3和我无法创建自定义外键。我有这样的事情:

class Product < ActiveRecord::Base
  belongs_to :owner, :class_name => 'User'
...
end

class User < ActiveRecord::Base
  has_many :products
...
end

class ProductsController < ApplicationController
  before_filter :authenticate_user!

  def index
    @products = current_user.products
  end
end

视图:

<%- @products.each do |p| -%>
    <%= p.created_at %><br />
<%- end -%>

我在Rails的日志中出现此错误:

Mysql::Error: Unknown column 'products.user_id' in 'where clause': SELECT     `products`.* FROM       `products` WHERE     (`products`.user_id = 1)

应该看到所谓belongs_to :owner外键的owner_id和外观。我甚至尝试明确设置的外键不起作用。我还检查灯塔为可能的Rails 3的错误,但没有运气。

有帮助吗?

解决方案

您需要指定的has_many :products关联的外键,它不会自动地知道它镜子belongs_to :owner

此应该工作:

class User < ActiveRecord::Base
  has_many :products, :foreign_key => 'owner_id'
...
end

从轨道文档:

  

<强>:foreign_key

     

指定外键   用于关联。默认   这被猜测是这个名字   类在小写和“_id”   后缀。因此,一个Person类,使   一个的has_many协会将使用   “PERSON_ID”作为默认   :foreign_key ..

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top