在Rails v4 has_many关联中,如何计算主键列

时间:2017-04-05 20:47:06

标签: ruby-on-rails ruby-on-rails-4

我有一个拥有hstore的Rails模型(使用hstore_accessor gem)。因此,当我将has_many关联上的主键设置为hstore字段时,生成的SQL只搜索NULL(Postgres)。

那么有没有办法定义一个自定义方法来计算关联的主键?

如果我这样做:

has_many :email_blocks, lambda { |cm| where(email_address: cm.email_address) },
  foreign_key: :email_address

然后我可以通过这个SQL获得大部分内容:

SELECT "email_blocks".* FROM "email_blocks"
WHERE "email_blocks"."email_address" = '950b5f7b-9388-45f4-9c42-42e18337b09c'
AND "email_blocks"."email_address" = 'me@example.com'

但是检查关系主键的第一个子句是不必要的,因为这个SQL将返回我想要的内容:

SELECT "email_blocks".* FROM "email_blocks"
WHERE "email_blocks"."email_address" = 'me@example.com'

0 个答案:

没有答案