0

我有一个我坚持的模式和模型。

它有这个关联:

  belongs_to :channel, :primary_key => "channel", :foreign_key => "name"

调用record.channel返回nil。我不知道这是否意味着频道是我无法追踪的保留字,或者当不清楚“频道”是否应该引用字段或表格时,ActiveRecord 是否就是这样做的。

我可以使用该read_attribute方法访问名为 channel 的字段。是否有类似的方法可以让我通过给定的记录访问 Channels 类?

4

1 回答 1

1

让我们分解这段代码:

belongs_to :channel, :primary_key => "channel", :foreign_key => "name"

这意味着您的模型(称为它Foo)有一个外键,即 a 的 ID Channel。所以,当你调用 时Foo.first.channel,上面生成的 SQL(因为你已经提供了primary_keyforeign_key)是:

SELECT * FROM channels WHERE channels.channel = <Foo.first>.name

通常,在 abelongs_to中,primary_key不应设置 - 它将id位于关联的对象上。此外,一般来说,最佳实践是设置foreign_keyas <associated-model-name>_id。在这种情况下,在Foo课堂上,它将是channel_id. 如果它使用此默认值,则这些属性都不是必需的。

TL;DR - 如果Foochannel_id作为列,您的关联将只是:

belongs_to :channel
于 2013-11-09T00:26:05.143 回答