繁体   English   中英

使用组合键时导轨中的问题

[英]Problems in rails while using composite keys

我正在从外部数据库mysql中使用复合键。 我已经添加了Composite_primary_keys gem,还向我的environment.rb文件中添加了require'composite_primary_keys。

当我尝试执行show动作时,出现以下错误。

本地主机:3000 / prereq_conf_expr_tbls / 1,PREQ 1,1

Mysql2::Error: You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax to use near 
'1,1) LIMIT 1' at line 1: SELECT `PREREQ_CONF_EXPR_TBL`.* FROM 
`PREREQ_CONF_EXPR_TBL` WHERE (1,PREQ 1,1) LIMIT 1

关联的表是使用这些mysql命令创建的。

CREATE TABLE PREREQ_CONF_EXPR_TBL(CMD_ID INT, ENTRY_TYPE VARCHAR(255), 
FIELD_NO INT, EXPR_ID INT, LOGICAL_OP VARCHAR(255), PRIMARY KEY(CMD_ID, 
ENTRY_TYPE, FIELD_NO), FOREIGN KEY(EXPR_ID) REFERENCES EXPRESSION(EXPR_ID) ON 
DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY(CMD_ID) REFERENCES 
BASE_CMD_TBL(CMD_ID) ON DELETE CASCADE ON UPDATE CASCADE);

控制器

class PrereqConfExprTblsController < ApplicationController
    def index
        @prereqs = PREREQ_CONF_EXPR_TBL.all
    end

    def new
        @prereqs = PREREQ_CONF_EXPR_TBL.new
    end

    def show
        @prereqs = PREREQ_CONF_EXPR_TBL.find_by(params[:id])
    end

    def edit
        @prereqs = PREREQ_CONF_EXPR_TBL.find_by(params[:id])
    end

    def create
        @prereqs = PREREQ_CONF_EXPR_TBL.new(prereq_params)
        if @prereqs.save
            redirect_to @prereqs
        else
            render 'new'
        end
    end

    def update
        @prereqs = PREREQ_CONF_EXPR_TBL.find_by(params[:id])
        if @prereqs.update_attributes(prereq_params)
            redirect_to prereq_conf_expr_tbls_url
        else
            render 'edit'
        end
    end

    def destroy
        PREREQ_CONF_EXPR_TBL.find_by(params[:id]).destroy
        redirect_to prereq_conf_expr_tbls_url
    end

    private

        def prereq_params
            params.require(:prereq_conf_expr_tbl).permit(:CMD_ID, :ENTRY_TYPE ,:FIELD_NO ,:EXPR_ID, :LOGICAL_OP)
        end
end

模型

class PREREQ_CONF_EXPR_TBL < ExternalDbAccess
    self.table_name = "PREREQ_CONF_EXPR_TBL"
    self.primary_keys = 'CMD_ID', 'ENTRY_TYPE', 'FIELD_NO'
end

路线

resources :prereq_conf_expr_tbls

弄清楚了。 而不是使用.find_by,而是使用.find

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM