Rails方法而不是模型的has_many中的id

时间:2018-10-10 13:26:16

标签: ruby-on-rails ruby

在我的模型中的某个地方,我有:

@ECHO off
FOR /f "delims=" %%G IN (D:\A.txt) DO (
    FOR  /f "tokens=5,7,8" %%H IN ('net time \\%%G ^| find "Current"') DO echo %%H %%I %%J
)>> nettime.csv

has_many :custom_values, -> { where(custom_field: CustomField.where(field_format: "company"))}, :foreign_key => "value", :primary_key => :id_s, :dependent => :destroy def id_s read_attribute(:id).to_s end 是varchar,所以我正在尝试使用方法custom_value.valueid中创建字符串

但是它不起作用,总是将id_scustom_value.value进行比较

FE:

NULL

同时:

2.5.0 :037 > WkAccount.first().custom_values
  WkAccount Load (0.7ms)  SELECT  `wk_accounts`.* FROM `wk_accounts`  ORDER BY `wk_accounts`.`id` ASC LIMIT 1
  CustomValue Load (36.5ms)  SELECT `custom_values`.* FROM `custom_values` WHERE `custom_values`.`value` = NULL AND `custom_values`.`custom_field_id` IN (SELECT `custom_fields`.`id` FROM `custom_fields` WHERE `custom_fields`.`field_format` = 'company')

我不知道为什么会出现

2.5.0 :039 > WkAccount.first().id_s
  WkAccount Load (1.2ms)  SELECT  `wk_accounts`.* FROM `wk_accounts`  ORDER BY `wk_accounts`.`id` ASC LIMIT 1
 => "7" 

代替

WHERE `custom_values`.`value` = NULL

有什么主意吗?

编辑:添加了整个模型

WHERE `custom_values`.`value` = "5"

1 个答案:

答案 0 :(得分:0)

来自docs

  

按照惯例,Rails假定id列用于保存其表的主键。 :primary_key选项可让您指定其他

也就是说,您根本无法通过自定义方法来关联记录。您必须通过数据库中的列将它们关联。这意味着,如果您需要id_s字符串的返回值来关联记录,则将一列添加到表中并使用该列而不是自定义方法。