簡體   English   中英

Rails連接sql列並創建一對多關系

[英]Rails concatenate sql columns and create one to many relationship

我有兩個模型: BuildingBuildingInfo 我想使用兩列townhall_levelname來關聯這兩個表。

理想情況下它的工作方式如下: Building.first.building_info例如Building.first.townhall_level => 5Building.first.name => cannonBuilding.first.building_info將訪問BuildingInfo.where(townhall_level: 5, name:"cannon"

最好的方法是什么? 我可以創建第三列連接nametownhall_level嗎? 我是否也可以使用該列創建belongs_to和has_many關系?

簡單明了:

class Building < ActiveRecord::Base

  def building_info
    BuildingInfo.find_by(townhall_level: townhall_level, name: name)
  end

end

如果找不到任何內容,它將nil ,並且即使找到多個,也將僅返回第一個記錄。 我還強烈建議您通過遷移向兩列添加索引:

add_index :building_infos, [:townhall_level, :name], name: 'building_infos_level_and_name'

如果您擔心性能,這將加快搜索速度。

嗯......我不確定這會起作用,但你可以做點什么

class Building < ActiveRecord::Base
  def self.bulding_info
    BuildingInfo.find_by(townhall_level: townhall_level, name: name)
  end
end

但我真的建議你把building_info_id放在建築模型中並且有一個

class Building < ActiveRecord::Base
  belongs_to :bulding_info
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM