如何创建一个关联,在两个表中映射不同的键,并在列值上隐含一些逻辑

时间:2016-03-29 02:25:55

标签: ruby-on-rails database activerecord associations

我有两张桌子

  

内容(主键:id,another_column:module_couch_id:string)

     

ContentDetails (主键:id,another_column:couch_id:string)

例如:

  

module_couch_id => 'say_hello_to_the_world'

     

couch_id => 'system.content.say_hello_to_the_world.en.us.192'

如何在Content类中定义关联以便我可以执行此操作

  

Content.first.content_details&从第二个

中检索数据

2 个答案:

答案 0 :(得分:0)

您需要将content_id类型的列integer添加到ContentDetails表。这是与ContentContentDetails绑定的列。

然后通过在模型中定义以下内容:

class Content < ActiveRecord::Base
  has_many :content_details
end

class ContentDetail < ActiveRecord::Base
  belongs_to :content
end

你应该能够:

Content.first.content_details

答案 1 :(得分:0)

这种方法应该有效:

has_many :content_details, -> (object) { where("couch_id like ?", "%#{object.module_couch_id}%") }, :foreign_key => 'couch_id'