我在3个模型之间有一个has_one关联,但它有一个错误,上面写着"ActionView :: Template :: Error(不能有一个has_many:通过关联'Policy#intermed',在通过关联之前通过'Policy#invoice'定义.)"
政策模式
class Policy < ApplicationRecord
self.table_name = "gipi_polbasic"
self.primary_key = "policy_id"
has_one :invoice
has_one :intermediary, through: :invoice, foreign_key: :intrmdry_intm_no
Run Code Online (Sandbox Code Playgroud)
中介模型
class Intermediary < ApplicationRecord
self.table_name = "giis_intermediary"
self.primary_key = "intm_no"
has_one :invoice, foreign_key: :intrmdry_intm_no
belongs_to :policy, foreign_key: :policy_id
Run Code Online (Sandbox Code Playgroud)
发票模型
class Invoice < ApplicationRecord
self.table_name = "gipi_comm_invoice"
self.primary_key = "intrmdry_intm_no"
belongs_to :policy, foreign_key: :policy_id
belongs_to :intermediary, foreign_key: :intrmdry_intm_no
Run Code Online (Sandbox Code Playgroud) 我有一个 oracle 数据库。在数据库中没有布尔值。但是在我迁移到 rails 之后,带有 1 个字符的 VARCHARS 变成了布尔值。如何再次将其转换为 varchar?顺便说一句,我的数据库是 oracle 10g,我使用的是最新版本的 ruby 和 rails。
Name Null? Type
----------------------------------------- -------- ----------------------------
INTM_NO NOT NULL NUMBER(12)
INTM_NAME NOT NULL VARCHAR2(240)
CO_INTM_TYPE NOT NULL VARCHAR2(5)
INTM_TYPE NOT NULL VARCHAR2(2)
TIN NOT NULL VARCHAR2(20)
CORP_TAG NOT NULL VARCHAR2(1)
SPECIAL_RATE NOT NULL VARCHAR2(1)
LIC_TAG NOT NULL VARCHAR2(1)
MAIL_ADDR1 NOT NULL VARCHAR2(50)
MAIL_ADDR2 VARCHAR2(50)
MAIL_ADDR3 VARCHAR2(50)
BILL_ADDR1 NOT NULL VARCHAR2(50)
BILL_ADDR2 VARCHAR2(50)
BILL_ADDR3 VARCHAR2(50)
ISS_CD VARCHAR2(2)
PHONE_NO VARCHAR2(40)
BIRTHDATE DATE
CONTACT_PERS VARCHAR2(50)
DESIGNATION VARCHAR2(5)
PARENT_INTM_NO …Run Code Online (Sandbox Code Playgroud) 当我尝试从某个日期范围进行搜索时出现此错误。
这是我的模型:
def self.search(search)
if search
@policies = Policy.find_by_sql("acct_ent_date IN ?", start_date..end_date)
else
limit(10)
end
end
Run Code Online (Sandbox Code Playgroud)