belongs_to的带有自定义CLASS_NAME不产生在Rails的正确外键3
-
27-09-2019 - |
题
我更新应用程序的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 ..
不隶属于 StackOverflow