我是 Golang 的新手,对 Gorm 更是如此。我正在尝试建立一对多的关系。基本上有一个股票代码和他的许多股票数据。一切都很好,除了我无法在模型上建立关系。我只需要一点关于如何做到这一点的提示(欢迎最佳实践)。
主.go
package main
import (
"github.com/jinzhu/gorm"
"github.com/khwerhahn/quoteworker/common"
"github.com/khwerhahn/quoteworker/tickerdata"
"github.com/khwerhahn/quoteworker/ticker"
)
// Migrate database
func Migrate(db *gorm.DB) {
ticker.AutoMigrate()
tickerdata.AutoMigrate()
}
func main() {
db := common.Init()
Migrate(db)
defer db.Close()
//// more code....
}
存在于它自己的文件和包中。
model.go代码
package ticker
import (
"github.com/jinzhu/gorm"
"github.com/khwerhahn/quoteworker/common"
)
type TickerModel struct {
gorm.Model
Name string `gorm:"column:name;unique_index"`
Symbol string `gorm:"column:symbol;unique_index"`
}
// AutoMigrate the schema of database if needed
func AutoMigrate() {
db := common.GetDB()
db.AutoMigrate(&TickerModel{})
}
存在于它自己的文件和包中。
model.go 代码数据
package tickerdata
import (
"github.com/jinzhu/gorm"
"github.com/khwerhahn/quoteworker/common"
"github.com/khwerhahn/quoteworker/ticker"
)
type TickerDataModel struct {
gorm.Model
Rank int `gorm:"column:rank"`
// left out some stuff....
TickerModel ticker.TickerModel
TickerModelID uint `gorm:"column:tickerId"`
}
// AutoMigrate the schema of database if needed
func AutoMigrate() {
db := common.GetDB()
db.AutoMigrate(&TickerDataModel{})
}
谢谢
最佳答案
参见 http://jinzhu.me/gorm/associations.html#has-many 部分
我假设 TickerModel 有很多 TickerDataModel。以下模型设置应该可以解决问题。
type TickerModel struct {
gorm.Model
Name string
Symbol string
TickerData []tickerdata.TickerDataModel
}
type TickerDataModel struct {
gorm.Model
Rank int
TickerModelID uint
}
与 ( http://jinzhu.me/gorm/crud.html#associations) 建立关系
tickerModel := TickerModel{
Name: "foo",
Symbol: "bar",
TickerData: []TickerDataModel{
{Rank: "1"},
{Rank: "2"},
},
}
db.Create(&tickerModel)
使用 ( http://jinzhu.me/gorm/crud.html#preloading-eager-loading ) 在 TickerData slice 中加载 TickerModels 和 TickerDataModels
db.Preload("TickerData").Find(&tickerModels)
关于postgresql - Gorm 和关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47539442/
我的问题的一个例子是体育游戏。一场体育比赛有两支球队,一支主队和一支客队。我的事件记录模型如下:classTeam"Team"has_one:away_team,:class_name=>"Team"end我希望能够通过游戏访问一个团队,例如:Game.find(1).home_team但我收到一个单元化常量错误:Game::team。谁能告诉我我做错了什么?谢谢, 最佳答案 如果Gamehas_one:team那么Rails假设您的teams表有一个game_id列。不过,您想要的是games表有一个team_id列,在这种情况下
📢博客主页:https://blog.csdn.net/weixin_43197380📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由Loewen丶原创,首发于CSDN,转载注明出处🙉📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨文章预览:一.分辨率(Resolution)1、工业相机的分辨率是如何定义的?2、工业相机的分辨率是如何选择的?二.精度(Accuracy)1、像素精度(PixelAccuracy)2、定位精度和重复定位精度(RepeatPrecision)三.公差(Tolerance)四.课后作业(Post-ClassExercises)视觉行业的初学者,甚至是做了1~2年
我已经找到了几个使用datamapper的示例,并且能够让它们正常工作。不过,所有这些示例都是针对sqlite数据库的。我正在尝试将数据映射器与postgresql一起使用。我将datamapper中的调用从sqlite3更改为postgres,并且我已经安装了dm-postgres-adapter。但它仍然不起作用。我还需要做什么? 最佳答案 与SQLite不同,PostgreSQL不将数据库存储在单个文件中。在你拥有createdyourdatabase之后,尝试这样的事情:DataMapper.setup:default,{:
我想合并多个事件记录关系例如,apple_companies=Company.where("namelike?","%apple%")banana_companies=Company.where("namelike?","%banana%")我想结合这两个关系。不是合并,合并是apple_companies.merge(banana_companies)=>Company.where("namelike?andnamelike?","%apple%","%banana%")我要Company.where("名字像?还是名字像?","%apple%","%banana%")之后,我会写代
我找到了这样的东西:Rails:Howtolistdatabasetables/objectsusingtheRailsconsole?这一行没问题:ActiveRecord::Base.connection.tables并返回所有表但是ActiveRecord::Base.connection.table_structure("users")产生错误:ActiveRecord::Base.connection.table_structure("projects")我认为table_structure不是Postgres方法。如何列出Postgres数据库的Rails控制台中表中的所有
我有一个简单的问题,与关联有关。我有一个书的模型,它有_onereservation。预订属于_书本。我想在预订Controller的创建方法中确保在预订时没有预订一本书。换句话说,我需要检查该书是否存在任何其他预订。我该怎么做?编辑:Aaa我做到了,感谢大家的提示,学到了一些新东西。当我尝试提供的解决方案时,出现no_method错误或nil_class等。这让我开始思考,我尝试处理的对象根本不存在。Krule给了我使用book.find的想法,所以我尝试使用它。最终我得到了它的工作:book=Book.find_by_id(reservation_params[:book_id])
我想使用PostgreSQL中的point类型。我已经完成了:railsgmodelTestpoint:point最终的迁移是:classCreateTests当我运行时:rakedb:migrate结果是:==CreateTests:migrating====================================================--create_table(:tests)rakeaborted!Anerrorhasoccurred,thisandalllatermigrationscanceled:undefinedmethod`point'for#/hom
我正在使用带有单个“帐户”表的STI模型来保存用户和技术人员的信息(即用户...8)错误:test_the_truth(用户测试):ActiveRecord::StatementInvalid:PGError:ERROR:关系“技术人员”不存在:从“技术人员”中删除...从本质上讲,标准框架不承认Technicians和Users表(或PostgreSQL称它们为“关系”)不存在,事实上,应该别名为Accounts。有什么想法吗?我对RoR比较陌生,不知道如何解决这个问题而又不完全删除STI。 最佳答案 原来问题是由于存在:./te
我正在使用PostgreSQL9.1.3(x86_64-pc-linux-gnu上的PostgreSQL9.1.3,由gcc-4.6.real(Ubuntu/Linaro4.6.1-9ubuntu3)4.6.1,64位编译)和在ubuntu11.10上运行3.2.2或3.2.1。现在,我可以使用以下命令连接PostgreSQLsupostgres输入密码我可以看到postgres=#我将以下详细信息放在我的config/database.yml中并执行“railsdb”,它工作正常。开发:adapter:postgresqlencoding:utf8reconnect:falsedat
我有一组名为Tasks和Posts的资源,它们之间存在has_and_belongs_to_many(HABTM)关系。还有一个连接它们的值的连接表。create_table'posts_tasks',:id=>falsedo|t|t.column:post_id,:integert.column:task_id,:integerend所以我的问题是如何检查特定任务的ID是否存在于从@post.tasks创建的数组中?irb(main):011:0>@post=Post.find(1)=>#@post.tasks=>[#,#]所以我的问题是,@post.tasks中是否存在"@task