Ruby on rails Rails控制器使用其他db for destroy方法(更新、创建也不起作用、仅显示)
我有这样的模型:Ruby on rails Rails控制器使用其他db for destroy方法(更新、创建也不起作用、仅显示),ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我有这样的模型: class ToType < ActiveRecord::Base attr_accessible :Name, :TYP_CCM, :TYP_CCM_TAX, :TYP_CDS_ID, :TYP_CTM, :TYP_CYLINDERS, :TYP_DOORS, :TYP_HP_FROM, :TYP_HP_UPTO, :TYP_ID, :TYP_KV_ABS_DES_ID, :TYP_KV_ASR_DES_ID, :TYP_KV_AXLE_DES_ID, :TYP_K
class ToType < ActiveRecord::Base
attr_accessible :Name, :TYP_CCM, :TYP_CCM_TAX, :TYP_CDS_ID, :TYP_CTM, :TYP_CYLINDERS, :TYP_DOORS, :TYP_HP_FROM, :TYP_HP_UPTO, :TYP_ID, :TYP_KV_ABS_DES_ID, :TYP_KV_ASR_DES_ID, :TYP_KV_AXLE_DES_ID, :TYP_KV_BODY_DES_ID, :TYP_KV_BRAKE_SYST_DES_ID, :TYP_KV_BRAKE_TYPE_DES_ID, :TYP_KV_CATALYST_DES_ID, :TYP_KV_DRIVE_DES_ID, :TYP_KV_ENGINE_DES_ID, :TYP_KV_FUEL_DES_ID, :TYP_KV_FUEL_SUPPLY_DES_ID, :TYP_KV_MODEL_DES_ID, :TYP_KV_STEERING_DES_ID, :TYP_KV_STEERING_SIDE_DES_ID, :TYP_KV_TRANS_DES_ID, :TYP_KV_VOLTAGE_DES_ID, :TYP_KW_FROM, :TYP_KW_UPTO, :TYP_LA_CTM, :TYP_LITRES, :TYP_MAX_WEIGHT, :TYP_MMT_CDS_ID, :TYP_MOD_ID, :TYP_PCON_END, :TYP_PCON_START, :TYP_RT_EXISTS, :TYP_SORT, :TYP_TANK, :TYP_VALVES, :is_in_to
set_primary_key :TYP_ID
belongs_to :to_model
has_many :to_articles, :dependent => :destroy
end
class ToArticle < ActiveRecord::Base
attr_accessible :details, :manufacturer, :name, :oem_number, :only_with_vin, :quantity, :type_id
belongs_to :to_type
end
我的表演动作正常,控制器也正常:
class Admin::Catalog::To::ToTypesController < ApplicationController
respond_to :html
before_filter :auth_user
def auth_user
redirect_to new_admin_session_path unless admin_signed_in?
end
def show
@mod_id = params[:id]
@man = ToType.find(:all, conditions: {:TYP_MOD_ID => @mod_id}, order: "Name ASC")
render :layout => 'admin'
end
def edit
@man = ToType.find(params[:id])
render :layout => 'admin'
end
def update
@man = ToType.find(params[:id])
if @man.update_attributes(params[:to_type])
redirect_to admin_catalog_to_to_type_path(@man.TYP_MOD_ID)
else
render :layout => 'admin'
end
end
def new
@man = ToType.new
@mod_id = params[:mod_id]
render :layout => 'admin'
end
def create
@man = ToType.new(params[:to_type])
@mod_id = params[:mod_id]
@man.TYP_MOD_ID = @mod_id
if @man.save
redirect_to admin_catalog_to_to_type_path(@mod_id)
else
render :layout => 'admin'
end
end
def destroy
@man = ToType.find(params[:id])
if @man.destroy
redirect_to admin_catalog_to_to_type_path(@man.TYP_MOD_ID)
else
render :layout => 'admin'
end
end
end
但当我尝试调用destroy方法时,我得到:
ActiveRecord::StatementInvalid in Admin::Catalog::To::ToTypesController#destroy
Mysql2::Error: Unknown column 'to_articles.to_type_id' in 'where clause': SELECT `to_articles`.* FROM `to_articles` WHERE `to_articles`.`to_type_id` = 26923
此外,当我尝试编辑或创建时,我会得到:
undefined method `model_name' for NilClass:Class
我认为和模型的连接有点不好:使用update和create时,它并没有初始化对象。
用其他方法摧毁它!db。发生了什么事?
我还尝试重新创建它,并重命名,没有。。。能理解什么错了。。。在模型中写入要使用的db表时,也会出现相同的错误
当我尝试通过控制台添加新对象时,一切都正常
upd:
class CreateToTypes < ActiveRecord::Migration
def change
create_table :to_types, :primary_key => :TYP_ID do |t|
t.integer :TYP_ID
t.integer :TYP_CDS_ID
t.integer :TYP_MMT_CDS_ID
t.integer :TYP_MOD_ID
t.binary :TYP_CTM
t.binary :TYP_LA_CTM
t.integer :TYP_SORT
t.integer :TYP_PCON_START
t.integer :TYP_PCON_END
t.integer :TYP_KW_FROM
t.integer :TYP_KW_UPTO
t.integer :TYP_HP_FROM
t.integer :TYP_HP_UPTO
t.integer :TYP_CCM
t.integer :TYP_CYLINDERS
t.integer :TYP_DOORS
t.integer :TYP_TANK
t.integer :TYP_KV_VOLTAGE_DES_ID
t.integer :TYP_KV_ABS_DES_ID
t.integer :TYP_KV_ASR_DES_ID
t.integer :TYP_KV_ENGINE_DES_ID
t.integer :TYP_KV_BRAKE_TYPE_DES_ID
t.integer :TYP_KV_BRAKE_SYST_DES_ID
t.integer :TYP_KV_FUEL_DES_ID
t.integer :TYP_KV_CATALYST_DES_ID
t.integer :TYP_KV_BODY_DES_ID
t.integer :TYP_KV_STEERING_DES_ID
t.integer :TYP_KV_STEERING_SIDE_DES_ID
t.float :TYP_MAX_WEIGHT
t.integer :TYP_KV_MODEL_DES_ID
t.integer :TYP_KV_AXLE_DES_ID
t.integer :TYP_CCM_TAX
t.float :TYP_LITRES
t.integer :TYP_KV_DRIVE_DES_ID
t.integer :TYP_KV_TRANS_DES_ID
t.integer :TYP_KV_FUEL_SUPPLY_DES_ID
t.integer :TYP_VALVES
t.integer :TYP_RT_EXISTS
t.string :Name
t.boolean :is_in_to
t.string :fuel_type
end
end
end
class CreateToArticles < ActiveRecord::Migration
def change
create_table :to_articles do |t|
t.string :oem_number
t.string :manufacturer
t.text :name
t.integer :quantity
t.text :details
t.boolean :only_with_vin
end
end
end
class CreateToTypes:TYP_ID do | t|
t、 整数:TYP_ID
t、 整数:类型\u CDS\u ID
t、 整数:类型\u MMT\u CDS\u ID
t、 整数:TYP\u MOD\u ID
t、 二进制:典型CTM
t、 二进制:TYP_LA_CTM
t、 整数:典型排序
t、 整数:典型PCON启动
t、 整数:典型值PCON\u结束
t、 整数:典型功率
t、 整数:典型功率,最大功率
t、 整数:典型值\u HP\u FROM
t、 整数:典型HP最多
t、 整数:典型CCM
t、 整数:典型圆柱
t、 整数:典型门
t、 整数:典型油箱
t、 整数:典型电压值
t、 整数:典型KV\u ABS\u DES\u ID
t、 整数:典型KV ASR DES ID
t、 整数:典型KV引擎DES ID
t、 整数:典型KV制动类型DES ID
t、 整数:典型KV制动系统设计ID
t、 整数:典型KV燃料DES ID
t、 整数:典型KV催化剂DES ID
t、 整数:典型KV体ID
t、 整数:典型KV转向DES ID
t、 整数:典型KV转向侧DES ID
t、 浮子:典型最大重量
t、 整数:典型KV型号DES ID
t、 整数:典型KV轴DES ID
t、 整数:类型CCM税
t、 浮子:典型升
t、 整数:典型KV驱动器ID
t、 整数:典型KV变压器ID
t、 整数:典型电压、燃料、电源、设计ID
t、 整数:典型阀门
t、 整数:存在类型\u RT\u
t、 字符串:名称
t、 布尔值:是在吗
t、 字符串:燃料类型
结束
结束
结束
类CreateToArticles
数据库中的到article
和到type
之间没有关系。
在ToArticle
迁移中使用属于
查看关联您能发布一些此型号的迁移吗?@wedens那么您认为呢>?还有什么?我认为这300%不是问题,因为所有的to_制造商,:to_型号,:to_类型,:to_产品都是相同的,但不只是工作类型
undefined method `model_name' for NilClass:Class
class CreateToTypes < ActiveRecord::Migration
def change
create_table :to_types, :primary_key => :TYP_ID do |t|
t.integer :TYP_ID
t.integer :TYP_CDS_ID
t.integer :TYP_MMT_CDS_ID
t.integer :TYP_MOD_ID
t.binary :TYP_CTM
t.binary :TYP_LA_CTM
t.integer :TYP_SORT
t.integer :TYP_PCON_START
t.integer :TYP_PCON_END
t.integer :TYP_KW_FROM
t.integer :TYP_KW_UPTO
t.integer :TYP_HP_FROM
t.integer :TYP_HP_UPTO
t.integer :TYP_CCM
t.integer :TYP_CYLINDERS
t.integer :TYP_DOORS
t.integer :TYP_TANK
t.integer :TYP_KV_VOLTAGE_DES_ID
t.integer :TYP_KV_ABS_DES_ID
t.integer :TYP_KV_ASR_DES_ID
t.integer :TYP_KV_ENGINE_DES_ID
t.integer :TYP_KV_BRAKE_TYPE_DES_ID
t.integer :TYP_KV_BRAKE_SYST_DES_ID
t.integer :TYP_KV_FUEL_DES_ID
t.integer :TYP_KV_CATALYST_DES_ID
t.integer :TYP_KV_BODY_DES_ID
t.integer :TYP_KV_STEERING_DES_ID
t.integer :TYP_KV_STEERING_SIDE_DES_ID
t.float :TYP_MAX_WEIGHT
t.integer :TYP_KV_MODEL_DES_ID
t.integer :TYP_KV_AXLE_DES_ID
t.integer :TYP_CCM_TAX
t.float :TYP_LITRES
t.integer :TYP_KV_DRIVE_DES_ID
t.integer :TYP_KV_TRANS_DES_ID
t.integer :TYP_KV_FUEL_SUPPLY_DES_ID
t.integer :TYP_VALVES
t.integer :TYP_RT_EXISTS
t.string :Name
t.boolean :is_in_to
t.string :fuel_type
end
end
end
class CreateToArticles < ActiveRecord::Migration
def change
create_table :to_articles do |t|
t.string :oem_number
t.string :manufacturer
t.text :name
t.integer :quantity
t.text :details
t.boolean :only_with_vin
end
end
end