在我的模型中的某个地方,我有:
@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.value
从id
中创建字符串
但是它不起作用,总是将id_s
与custom_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"
答案 0 :(得分:0)
来自docs:
按照惯例,Rails假定
id
列用于保存其表的主键。:primary_key
选项可让您指定其他列。
也就是说,您根本无法通过自定义方法来关联记录。您必须通过数据库中的列将它们关联。这意味着,如果您需要id_s
字符串的返回值来关联记录,则将一列添加到表中并使用该列而不是自定义方法。